Function at 0x393f8e
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov dword [esp + 4], 0xf3f2f120
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
mov eax, 0x2c
mov ecx, 0xcc86a6d3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x28]
mov esi, eax
and esi, edx
lea edi, [edx + edx]
not edi
add edi, edx
and edi, ecx
or edi, esi
mov edx, 0xfea14222
sub edx, edi
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov byte [esp + eax - 0x28], dl
inc eax
dec ecx
cmp eax, 0x33
jne case.default.0x393662
mov eax, dword [esp + 4]
mov eax, dword fs:[eax]
xor ecx, ecx
cmp dword [esp + 0x24], 0
sete cl
jmp dword [ecx*4 + 0x39ee34]
mov edx, dword [eax + 0xc]
add edx, 0xc
mov dword [esp], 0
mov esi, dword [edx]
xor ecx, ecx
cmp esi, edx
setne cl
mov dword [esp + 0xc], edx
jmp dword [ecx*4 + 0x39ee3c]
jmp dword [edi*4 + 0x39ee54]
mov esi, dword [esi]
xor ecx, ecx
cmp esi, edx
setne cl
jmp dword [ecx*4 + 0x39ee3c]
mov ebx, dword [esi + 0x30]
xor ecx, ecx
test ebx, ebx
setne cl
mov edi, 1
jmp dword [ecx*4 + 0x39ee44]
mov ebp, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, word [ebp]
lea edx, [ecx - 0x41]
cmp dx, 0x1a
jae 0x3936e0
or ecx, 0x20
movzx edx, word [ebx]
lea eax, [edx - 0x41]
cmp ax, 0x1a
jae 0x3936ef
or edx, 0x20
test cx, cx
je 0x3936ff
add ebp, 2
add ebx, 2
cmp cx, dx
je 0x3936d0
xor eax, eax
cmp cx, dx
sete al
mov edx, dword [esp + 0xc]
jmp dword [eax*4 + 0x39ee4c]
mov eax, dword [esi + 0x18]
mov dword [esp], eax
xor ecx, ecx
jmp dword [ecx*4 + 0x39ee54]
mov eax, dword [eax + 8]
mov dword [esp], eax
mov eax, dword [esp]
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
jmp 0x39378f
mov esi, dword [eax + 8]
mov dword [ebp - 0x14], esi
movzx eax, word [esi]
mov dword [ebp - 0x1c], 0xb7b6effd
mov byte [ebp - 0x18], 0
mov esi, 0x1e
mov edi, 0xe1
nop
nop
nop
nop
nop
nop
movzx ebx, byte [ebp + esi - 0x3a]
mov ecx, esi
or ecx, ebx
not ebx
or ebx, edi
and ebx, ecx
add bl, 0x6a
mov byte [ebp + esi - 0x3a], bl
inc esi
dec edi
cmp esi, 0x23
jne case.default.0x3937d7
xor ecx, ecx
cmp dword [ebp - 0x1c], eax
sete cl
xor esi, esi
jmp dword [ecx*4 + 0x39ee64]
xor ecx, ecx
test esi, esi
sete cl
jmp dword [ecx*4 + 0x39ee7c]
jmp 0x3938ac
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax + 0x3c]
mov dword [ebp - 0x20], ecx
mov eax, dword [eax + ecx]
mov dword [ebp - 0x24], eax
mov dword [edx], 0xfffe3c08
mov ebx, 0xab
mov edi, 0x55
movzx eax, byte [edx + ebx - 0xab]
lea esi, [eax + eax]
not esi
add esi, eax
mov ecx, esi
xor ecx, 0x2b
or esi, 0xd4
and esi, ecx
mov ecx, eax
xor ecx, 0xd4
or eax, 0x2b
and eax, ecx
or eax, esi
mov esi, edi
and esi, 0x54
mov ecx, edi
or ecx, 0x2b
add ecx, ebx
or ecx, esi
xor ecx, eax
add cl, 0xae
mov byte [edx + ebx - 0xab], cl
inc ebx
dec edi
cmp ebx, 0xaf
jne case.default.0x393869
xor eax, eax
mov ecx, dword [ebp - 0x24]
cmp ecx, dword [edx]
sete al
jmp dword [eax*4 + 0x39ee6c]
mov ecx, 1
xor esi, esi
jmp dword [ecx*4 + 0x39ee74]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x20]
mov eax, dword [eax + ecx + 0x50]
mov esi, 1
xor ecx, ecx
jmp dword [ecx*4 + 0x39ee74]
xor ecx, ecx
xor edx, edx
test ecx, 0
sete dl
jmp dword [edx*4 + 0x39ee7c]
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor edx, edx
test ecx, ecx
sete dl
jmp dword [edx*4 + 0x39ee94]
mov edx, dword [eax + 0xc]
add edx, 0xc
xor eax, eax
mov esi, dword [edx]
xor ebx, ebx
cmp esi, edx
setne bl
jmp dword [ebx*4 + 0x39ee9c]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
add edx, 0xc
xor eax, eax
mov esi, dword [edx]
xor ebx, ebx
cmp esi, edx
setne bl
jmp dword [ebx*4 + 0x39ee9c]
mov eax, dword [esi + 0x30]
xor edi, edi
jmp dword [edi*4 + 0x39eeac]
mov esi, dword [esi]
xor ebx, ebx
cmp esi, edx
setne bl
jmp dword [ebx*4 + 0x39ee9c]
xor ebx, ebx
cmp dword [esi + 0x18], ecx
sete bl
jmp dword [ebx*4 + 0x39eea4]
mov edi, 1
jmp dword [edi*4 + 0x39eeac]
add esp, 8
pop esi
pop edi
pop ebx
ret
mov eax, dword [edi + 0x28]
xor ebx, ebx
jmp dword [ebx*4 + 0x39eeec]
mov edi, dword [edi]
xor ebx, ebx
cmp edi, edx
setne bl
jmp dword [ebx*4 + 0x39eebc]
jmp esi
mov ebx, 1
jmp dword [ebx*4 + 0x39eeec]
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx + 0x3c]
mov ecx, dword [ecx + edx]
mov dword [esp], 0x57560418
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov esi, 0x6e
mov edi, 0x91
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + esi - 0x6e]
mov ebx, edi
xor ebx, esi
and ebx, ebp
xor ebx, esi
add bl, 0xda
mov byte [esp + esi - 0x6e], bl
inc esi
dec edi
cmp esi, 0x75
jne case.default.0x393b53
xor ebx, ebx
cmp ecx, dword [esp]
setne bl
jmp dword [ebx*4 + 0x39eefc]
mov ecx, dword [esp + 0x48]
mov esi, dword [ecx + edx + 0x78]
mov ecx, dword [ecx + edx + 0x7c]
mov dword [esp + 0x24], ecx
test ecx, ecx
sete cl
test esi, esi
sete dl
or dl, cl
movzx ecx, dl
mov dword [esp + 0x28], esi
jmp dword [ecx*4 + 0x39ef04]
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + esi + 0x20]
add ecx, eax
mov dword [esp + 0x30], ecx
mov ecx, dword [eax + esi + 0x24]
add ecx, eax
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + esi + 0x1c]
add ecx, eax
mov dword [esp + 0x18], ecx
mov edx, dword [eax + esi + 0x18]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x2c], edx
cmp ecx, edx
setb al
mov dword [esp + 0x20], 1
jmp dword [eax*4 + 0x39ef0c]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x10], ecx
mov edx, dword [eax + ecx*4]
add edx, dword [esp + 0x48]
mov ecx, 0xffffffff
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
cmp byte [edx + ecx + 1], 0
lea ecx, [ecx + 1]
lea eax, [eax + 1]
jne 0x393bf0
mov dword [esp + 0x14], ecx
mov dword [esp + 8], esi
mov dword [esp + 0xc], edx
mov dword [esp], 0x929e9c69
mov byte [esp + 4], 0
xor eax, eax
xor edi, edi
nop
nop
nop
nop
nop
movzx edx, byte [esp + edi]
mov ecx, eax
and ecx, 0xa
mov ebx, edi
xor ebx, 0xe63ac225
add ebx, ecx
mov ecx, edx
and ecx, ebx
mov ebp, ecx
and ebp, 0x3d
mov esi, ecx
or esi, 0xfd
inc esi
imul esi, ebp
mov ebp, ecx
and ebp, 2
or ecx, 2
imul ecx, ebp
sub ebx, ecx
add ebx, esi
add bl, dl
add bl, 0x47
mov byte [esp + edi], bl
inc edi
add eax, 2
cmp edi, 5
jne 0x393c20
mov eax, dword [esp + 0x14]
test eax, eax
je 0x393c90
mov ebx, dword [esp]
cmp eax, 4
jae 0x393ca0
mov eax, 0x36c0b43e
mov esi, dword [esp + 0xc]
mov ebp, dword [esp + 8]
jmp 0x393ceb
mov ecx, 0x36c0b43e
jmp 0x393d10
mov ebp, dword [esp + 8]
mov edi, ebp
and edi, 0xfffffffc
mov eax, 0x36c0b43e
mov esi, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, byte [esi]
xor ecx, eax
imul ecx, ebx
movsx eax, byte [esi + 1]
xor eax, ecx
imul eax, ebx
movsx ecx, byte [esi + 2]
xor ecx, eax
imul ecx, ebx
movsx eax, byte [esi + 3]
add esi, 4
xor eax, ecx
imul eax, ebx
add edi, 0xfffffffc
jne 0x393cc0
mov ecx, eax
test byte [esp + 0x14], 3
je 0x393d10
and ebp, 3
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
movsx ecx, byte [esi + edx]
xor ecx, eax
imul ecx, ebx
inc edx
mov eax, ecx
cmp ebp, edx
jne 0x393d00
xor eax, eax
cmp ecx, dword [esp + 0x4c]
setne al
jmp dword [eax*4 + 0x39ef14]
mov ecx, dword [esp + 0x10]
inc ecx
xor eax, eax
cmp ecx, dword [esp + 0x2c]
setb al
jmp dword [eax*4 + 0x39ef0c]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + eax*4]
xor edx, edx
mov ecx, eax
sub ecx, dword [esp + 0x28]
setae dl
jmp dword [edx*4 + 0x39ef1c]
xor edx, edx
cmp ecx, dword [esp + 0x24]
setb dl
jmp dword [edx*4 + 0x39ef24]
mov edx, dword [esp + 0x48]
add edx, eax
xor ecx, ecx
mov eax, edx
jmp dword [ecx*4 + 0x39ef2c]
mov ecx, dword [esp + 0x20]
jmp dword [ecx*4 + 0x39ef2c]
xor eax, eax
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x3c]
mov esi, dword [eax + edx]
mov dword [ecx], 0x106c8d4
mov dword [ecx + 4], 0
xor ebx, ebx
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x41
xor al, byte [ecx + ebx]
add al, 0xbb
mov byte [ecx + ebx], al
inc ebx
cmp ebx, 8
jne case.default.0x393e7b
xor ebx, ebx
cmp esi, dword [ecx]
setne bl
xor eax, eax
jmp dword [ebx*4 + 0x39ef3c]
mov esi, dword [ebp + 8]
mov ecx, dword [esi + edx + 0x80]
cmp dword [esi + edx + 0x84], 0
sete dl
test ecx, ecx
sete dh
or dh, dl
movzx edx, dh
jmp dword [edx*4 + 0x39ef44]
mov edx, dword [ebp + 8]
mov esi, dword [edx + ecx]
add esi, edx
mov ecx, dword [edx + ecx + 0x10]
add ecx, edx
mov dword [ebp - 0x1c], ecx
mov ecx, dword [case.0x393e7b.7]
mov dword [ebp - 0x38], ecx
mov edi, dword [esi]
mov ecx, edi
shr ecx, 0x1f
jmp dword [ecx*4 + 0x39ef4c]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax]
xor ecx, ecx
mov dword [ebp - 0x34], eax
mov esi, dword [ebp - 0x20]
jmp dword [ecx*4 + 0x39ef74]
mov edi, dword [esi]
mov ecx, edi
shr ecx, 0x1f
xor eax, eax
jmp dword [ecx*4 + 0x39ef4c]
xor ecx, ecx
test edi, edi
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x39ef54]
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x24], edi
jmp dword [ebp - 0x38]
mov dword [ebp - 0x14], 0x929e9c69
mov byte [ebp - 0x10], 0
xor edx, edx
xor ecx, ecx
nop
nop
nop
nop
movzx eax, byte [ebp + ecx - 0x14]
mov dword [ebp - 0x18], eax
mov esi, edx
and esi, 0xa
mov ebx, ecx
xor ebx, 0xe63ac225
add ebx, esi
mov esi, eax
and esi, ebx
mov eax, esi
and eax, 0x3d
mov edi, esi
or edi, 0xfd
inc edi
imul edi, eax
mov eax, esi
and eax, 2
or esi, 2
imul esi, eax
sub ebx, esi
add ebx, edi
add bl, byte [ebp - 0x18]
add bl, 0x47
mov byte [ebp + ecx - 0x14], bl
inc ecx
add edx, 2
cmp ecx, 5
jne 0x393f20
mov edi, dword [ebp - 0x24]
jmp case.0x393e7b.7
mov eax, 0x36c0b43e
mov edi, dword [ebp - 0x24]
jmp dword [0x39ef64]
mov eax, dword [ebp + 8]
lea edx, [eax + edi]
add edx, 2
mov ecx, 0xffffffff
xor eax, eax
nop
nop
mov esi, eax
cmp byte [edx + ecx + 1], 0
lea ecx, [ecx + 1]
lea eax, [eax + 1]
jne 0x393fa0
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x14], 0x929e9c69
mov byte [ebp - 0x10], 0
xor edx, edx
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [ebp + esi - 0x14]
mov dword [ebp - 0x18], edi
mov ecx, edx
and ecx, 0xa
mov ebx, esi
xor ebx, 0xe63ac225
add ebx, ecx
and edi, ebx
mov eax, edi
and eax, 0x3d
mov ecx, edi
or ecx, 0xfd
inc ecx
imul ecx, eax
mov eax, edi
and eax, 2
or edi, 2
imul edi, eax
sub ebx, edi
add ebx, ecx
add bl, byte [ebp - 0x18]
add bl, 0x47
mov byte [ebp + esi - 0x14], bl
inc esi
add edx, 2
cmp esi, 5
jne 0x393fd0
mov ecx, dword [ebp - 0x30]
test ecx, ecx
je 0x393f80
mov esi, dword [ebp - 0x14]
cmp ecx, 4
jae 0x394040
mov edx, 0x36c0b43e
mov ebx, dword [ebp - 0x28]
jmp 0x39407e
mov edi, dword [ebp - 0x2c]
and edi, 0xfffffffc
mov edx, 0x36c0b43e
mov ebx, dword [ebp - 0x28]
nop
nop
movsx eax, byte [ebx]
xor eax, edx
imul eax, esi
movsx ecx, byte [ebx + 1]
xor ecx, eax
imul ecx, esi
movsx eax, byte [ebx + 2]
xor eax, ecx
imul eax, esi
movsx edx, byte [ebx + 3]
add ebx, 4
xor edx, eax
imul edx, esi
add edi, 0xfffffffc
jne 0x394050
mov ecx, dword [ebp - 0x30]
mov eax, edx
test cl, 3
mov edi, dword [ebp - 0x2c]
je 0x3940a0
and edi, 3
xor ecx, ecx
nop
nop
nop
movsx eax, byte [ebx + ecx]
xor eax, edx
imul eax, esi
inc ecx
mov edx, eax
cmp edi, ecx
jne 0x394090
mov edi, dword [ebp - 0x24]
jmp dword [0x39ef64]
xor ecx, ecx
cmp eax, dword [ebp + 0xc]
sete cl
jmp dword [ecx*4 + 0x39ef6c]
mov esi, dword [ebp - 0x20]
add esi, 4
add dword [ebp - 0x1c], 4
mov ecx, 1
mov eax, dword [ebp - 0x34]
jmp dword [ecx*4 + 0x39ef74]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, dword [esp + 0x2c]
mov edx, dword [esi + 0x3c]
lea ecx, [esi + edx]
mov esi, dword [esi + edx]
mov dword [esp], 0x313ef8ec
mov dword [esp + 4], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
and edi, 0xa
mov ebx, edx
xor ebx, 0x75
add ebx, edi
xor bl, byte [esp + edx]
add bl, 0xb7
mov byte [esp + edx], bl
inc edx
add eax, 2
cmp edx, 8
jne case.default.0x3941ca
mov eax, dword [esp]
xor edx, edx
cmp esi, eax
setne dl
xor eax, eax
jmp dword [edx*4 + 0x39ef84]
movzx eax, word [ecx + 0x14]
lea edi, [ecx + eax]
add edi, 0x18
movzx esi, word [ecx + 6]
mov ecx, dword [case.0x3941ca.6]
mov edx, dword [case.0x393b53.53]
xor ebx, ebx
xor eax, eax
mov word [esp + 0xa], si
cmp bx, si
setb al
mov dword [esp + 0xc], 1
jmp dword [eax*4 + 0x39ef8c]
mov dword [esp + 0x14], ebx
mov esi, 8
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x10], edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
sub esi, 1
jb 0x394250
movzx eax, byte [ebp]
inc ebp
movzx ebx, byte [edi]
inc edi
cmp al, bl
je 0x394230
sub eax, ebx
jmp 0x394252
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
xor ebx, ebx
test eax, eax
sete bl
jmp dword [ebx*4 + 0x39efa4]
jmp edx
mov edi, dword [esp + 0x10]
add edi, 0x28
mov ebx, dword [esp + 0x14]
inc ebx
xor eax, eax
cmp bx, word [esp + 0xa]
setb al
jmp dword [eax*4 + 0x39ef8c]
xor eax, eax
mov ecx, dword [esp + 0x34]
test ecx, ecx
setne al
mov edx, dword [esp + 0x10]
jmp dword [eax*4 + 0x39efac]
mov eax, dword [esp + 0x2c]
add eax, dword [edx + 0xc]
mov dword [ecx], eax
mov eax, dword [case.0x393b53.48]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
cmp dword [esp + 0x38], 0
setne al
mov dword [esp + 0xc], 0
jmp dword [eax*4 + 0x39efc4]
mov eax, dword [edx + 0x10]
mov ecx, dword [esp + 0x38]
mov dword [ecx], eax
mov eax, dword [case.0x393b53.57]
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov al, 1
mov ecx, dword [esp + 0xc]
jmp dword [ecx*4 + 0x39efec]
xor eax, eax
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret