Function at 0x46897d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
mov ebx, dword [eax + 4]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x46897f0
mov esi, dword [ecx + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x4689810
sar edx, 1
sar eax, 1
lea ecx, [edx + eax]
mov dword [esp + 0x48], eax
add eax, edx
add eax, 0x1b
test eax, eax
mov dword [esp + 0x4c], edx
mov dword [esp + 0x44], ecx
mov dword [esp + 4], esi
jns 0x4689842
mov eax, 0xffffffff
jmp 0x4689849
lea eax, [ecx*2 + 0x36]
push eax
call fcn.046782d0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0xc], 0x23de21cc
mov dword [esp + 0x10], 0x27c525bb
mov dword [esp + 0x14], 0xdb46d939
mov dword [esp + 0x18], 0xdf1bddfc
mov dword [esp + 0x1c], 0xd346d158
mov dword [esp + 0x20], 0xd748d531
mov dword [esp + 0x24], 0xcb53c95b
mov dword [esp + 0x28], 0xcf50cd53
mov dword [esp + 0x2c], 0xc331c1e0
mov dword [esp + 0x30], 0xc752c521
mov dword [esp + 0x34], 0xfb63f96c
mov dword [esp + 0x38], 0xff19fd62
mov dword [esp + 0x3c], 0xf31ef163
mov dword [esp + 0x40], 0xf5f4
mov eax, 0x7c9d29f8
mov ecx, 0x8362d607
nop
movzx esi, byte [esp + eax - 0x7c9d29ec]
lea edx, [eax - 0x7c9d2900]
mov ebp, esi
not ebp
or ebp, edx
lea edx, [esi + ebp]
inc edx
mov ebp, edx
and ebp, 0xfffffffd
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
xor edi, 2
imul edi, ebp
add edx, edi
lea edi, [eax + esi]
mov ebp, ecx
sub ebp, esi
and ebp, edx
not edx
and edx, edi
sub edx, ebp
add dl, 0x28
mov byte [esp + eax - 0x7c9d29ec], dl
inc eax
dec ecx
cmp eax, 0x7c9d2a30
jne 0x46898d0
movzx ecx, word [ebx]
mov edx, dword [esp]
mov eax, edx
test cx, cx
je 0x4689951
add ebx, 2
mov eax, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x4689940
mov word [eax], 0
movzx ecx, word [esp + 0xc]
test cx, cx
mov esi, dword [esp + 4]
je 0x4689983
lea edx, [esp + 0xe]
mov edi, dword [esp + 0x70]
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4689970
jmp 0x4689987
mov edi, dword [esp + 0x70]
mov word [eax], 0
movzx ecx, word [esi]
test cx, cx
je 0x46899b1
add esi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x46899a0
mov word [eax], 0
mov eax, dword [esp + 0x6c]
mov esi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x46899d0
sar eax, 1
mov ecx, dword [esp + 0x6c]
mov ebp, dword [ecx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x46899f0
inc eax
sar ecx, 1
mov edx, ecx
and edx, eax
add edx, edx
mov ebx, dword [edi]
mov edi, 0xfffffffe
nop
nop
nop
nop
nop
cmp word [ebx + edi + 2], 0
lea edi, [edi + 2]
jne 0x4689a10
xor ecx, eax
sar edi, 1
add ecx, edx
lea eax, [edi + ecx]
add eax, 0x12
test eax, eax
jns 0x4689a32
mov eax, 0xffffffff
jmp 0x4689a3b
add ecx, edi
lea eax, [ecx*2 + 0x24]
mov dword [esp + 0x50], ebp
mov dword [esp + 8], ebx
push eax
call fcn.046782d0
add esp, 4
movzx ecx, word [esi]
mov edi, eax
test cx, cx
je 0x4689a71
add esi, 2
mov edi, eax
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x4689a60
mov dword [esp + 4], eax
mov word [edi], 0x2f
mov dword [esp + 0xc], 0x1fdb19eb
mov dword [esp + 0x10], 0xe3561da4
mov dword [esp + 0x14], 0xe754e145
mov dword [esp + 0x18], 0xeb43e553
mov dword [esp + 0x1c], 0xef5ce95b
mov dword [esp + 0x20], 0xf301ed5b
mov word [esp + 0x24], 0xf1f0
mov dword [esp + 0x26], 0
mov byte [esp + 0x2a], 0
lea eax, [esp + 0xc]
xor ebp, ebp
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax]
mov ecx, ebp
and ecx, 0x535daf0c
mov edx, esi
xor edx, 0x56512879
sub edx, ecx
inc edx
xor edx, ebx
mov ecx, edx
not ecx
and ecx, 0x63
and edx, 0x9c
sub edx, ecx
inc dl
mov byte [eax], dl
inc eax
dec esi
add ebp, 0xfffffffe
cmp esi, 0xffffffe1
jne 0x4689ad0
add edi, 2
mov ecx, dword [esp + 0x50]
movzx eax, word [ecx]
test ax, ax
mov edx, dword [esp + 8]
je 0x4689b33
add ecx, 2
mov ebx, dword [esp + 0x70]
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4689b20
jmp 0x4689b37
mov ebx, dword [esp + 0x70]
mov word [edi], 0
movzx eax, word [esp + 0xc]
test ax, ax
je 0x4689b61
lea ecx, [esp + 0xe]
nop
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4689b50
mov word [edi], 0
movzx eax, word [edx]
test ax, ax
je 0x4689b91
add edx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [edx]
add edx, 2
test ax, ax
jne 0x4689b80
mov word [edi], 0
mov dword [esp + 0xc], 0x696a6b8a
mov eax, 0x17
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0xb]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x8d
mov byte [esp + eax - 0xb], cl
inc eax
cmp eax, 0x1b
jne 0x4689bb0
lea esi, [esp + 0xc]
push 0
push 0
push 0xc00000
push esi
mov ebp, dword [esp + 0x10]
push ebp
push dword [esp + 0x18]
push dword [esp + 0x80]
call fcn.0468d8a0
add esp, 0x1c
mov byte [esp + 8], al
jmp dword [0x46b2cec]