Function at 0x46ac172
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov eax, dword [esp + 0x44]
movzx eax, word [eax]
mov dword [esp], 0x717ed5a3
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov ecx, 0x95
mov edx, 0x6a
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x95]
mov esi, edx
or esi, edi
lea ebx, [edx - 0x40]
mov ebp, ecx
and ebp, 0x83
and ebx, 0x2c
or ebx, ebp
xor ebx, 0x3c
not edi
or edi, ebx
not esi
lea ebx, [edi + edi]
not ebx
add ebx, edi
or ebx, esi
add bl, 0x17
mov byte [esp + ecx - 0x95], bl
inc ecx
dec edx
cmp ecx, 0x9c
jne case.default.0x46abcdc
xor ecx, ecx
cmp dword [esp], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x46b69a8]
mov edx, dword [esp + 0x44]
mov ecx, dword [edx + 0x3c]
mov edx, dword [edx + ecx]
mov dword [esp + 8], edx
mov dword [esp], 0xb9ba4074
mov byte [esp + 4], 0
mov edx, 0x20
mov edi, 0x608afbdf
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edi - 0x608afbdf]
mov esi, edx
and esi, 0x28
mov ebx, edi
and ebx, 0x97
or ebx, esi
xor ebx, edi
xor ebx, 0x97
and ebx, ebp
xor ebx, edi
add bl, 0xa5
mov byte [esp + edi - 0x608afbdf], bl
dec edx
inc edi
cmp edx, 0x1b
jne case.default.0x46abd50
xor edx, edx
mov esi, dword [esp + 8]
cmp esi, dword [esp]
setne dl
jmp dword [edx*4 + 0x46b69b0]
mov edx, dword [esp + 0x44]
mov esi, dword [edx + ecx + 0x78]
mov ecx, dword [edx + ecx + 0x7c]
mov dword [esp + 0x20], ecx
test ecx, ecx
sete cl
test esi, esi
sete dl
or dl, cl
movzx ecx, dl
jmp dword [ecx*4 + 0x46b69b8]
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + esi + 0x20]
add ecx, eax
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + esi + 0x24]
add ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, dword [eax + esi + 0x1c]
add ecx, eax
mov dword [esp + 0x14], ecx
mov eax, dword [eax + esi + 0x18]
xor edx, edx
mov edi, dword [case.0x46abd50.15]
xor ecx, ecx
mov dword [esp + 0x24], eax
cmp edx, eax
setb cl
mov dword [esp + 0xc], 1
mov dword [esp + 0x1c], esi
jmp dword [ecx*4 + 0x46b69c0]
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x28]
mov dword [esp + 8], edx
mov eax, dword [eax + edx*4]
add eax, dword [esp + 0x44]
mov ecx, 0xffffffff
xor esi, esi
nop
nop
nop
nop
nop
nop
mov ebx, esi
cmp byte [eax + ecx + 1], 0
lea ecx, [ecx + 1]
lea esi, [esi + 1]
jne 0x46abdf0
mov dword [esp + 0x10], eax
mov dword [esp], 0x2060499
mov word [esp + 4], 0
mov esi, 0x3e5e27e
mov eax, 0x7c1a1d81
nop
nop
nop
nop
nop
movzx ebp, byte [esp + eax - 0x7c1a1d81]
mov edx, esi
and edx, 0x300220c
mov edi, eax
and edi, 0x48100403
or edi, edx
xor edi, ebp
mov edx, edi
and edx, 1
xor edi, 0x8d
lea edx, [edi + edx*2]
add dl, 0x7a
mov byte [esp + eax - 0x7c1a1d81], dl
dec esi
inc eax
cmp esi, 0x3e5e278
jne 0x46abe20
test ecx, ecx
je 0x46abe80
mov ebp, dword [esp]
cmp ecx, 4
jae 0x46abe90
mov esi, 0x36c0b43e
mov edx, dword [esp + 0x10]
jmp 0x46abecf
mov edi, 0x36c0b43e
jmp 0x46abef0
mov edi, ebx
and edi, 0xfffffffc
mov esi, 0x36c0b43e
mov edx, dword [esp + 0x10]
nop
nop
movsx eax, byte [edx]
xor eax, esi
imul eax, ebp
mov esi, edx
movsx edx, byte [edx + 1]
xor edx, eax
imul edx, ebp
movsx eax, byte [esi + 2]
xor eax, edx
mov edx, esi
imul eax, ebp
movsx esi, byte [esi + 3]
add edx, 4
xor esi, eax
imul esi, ebp
add edi, 0xfffffffc
jne 0x46abea0
mov edi, esi
test cl, 3
je 0x46abef0
and ebx, 3
xor ecx, ecx
nop
nop
nop
nop
nop
movsx edi, byte [edx + ecx]
xor edi, esi
imul edi, ebp
inc ecx
mov esi, edi
cmp ebx, ecx
jne 0x46abee0
xor eax, eax
cmp edi, dword [esp + 0x48]
setne al
jmp dword [eax*4 + 0x46b69c8]
mov edx, dword [esp + 8]
inc edx
mov edi, dword [esp + 0x2c]
nop
nop
nop
nop
nop
nop
nop
jmp edi
xor ecx, ecx
cmp edx, dword [esp + 0x24]
setb cl
jmp dword [ecx*4 + 0x46b69c0]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 8]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + eax*4]
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp ecx, esi
setae al
jmp dword [eax*4 + 0x46b69d0]
mov eax, ecx
xor eax, 0x26054a21
mov edx, ecx
and edx, 0x26054a21
sub eax, esi
lea eax, [eax + edx*2]
add eax, 0xd9fab5df
xor edx, edx
cmp eax, dword [esp + 0x20]
setb dl
jmp dword [edx*4 + 0x46b69d8]
mov eax, dword [esp + 0x44]
add eax, ecx
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0xc]
jmp dword [ecx*4 + 0x46b69f0]
xor eax, eax
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp + 0x34]
mov ecx, dword [ecx + 0x3c]
jmp dword [0x46b6a04]
mov dword [esp], 0x393a708c
mov dword [esp + 4], 0
mov edx, 0x7633018b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx - 0x7633018b]
lea edi, [edx - 0x76330100]
and edi, esi
add esi, edx
add edi, edi
mov ebx, esi
sub ebx, edi
and esi, 1
xor ebx, 1
lea ebx, [ebx + esi*2]
add bl, 0x48
mov byte [esp + edx - 0x7633018b], bl
inc edx
cmp edx, 0x76330193
jne 0x46ac040
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x34]
mov edx, dword [edx + ecx]
mov dword [esp], 0x393a708c
mov dword [esp + 4], 0
mov esi, 0x7633018b
nop
nop
nop
nop
nop
movzx edi, byte [esp + esi - 0x7633018b]
lea ebx, [esi - 0x76330100]
and ebx, edi
add edi, esi
add ebx, ebx
mov ebp, edi
sub ebp, ebx
and edi, 1
xor ebp, 1
lea ebx, [edi*2]
add ebx, ebp
add bl, 0x48
mov byte [esp + esi - 0x7633018b], bl
inc esi
cmp esi, 0x76330193
jne 0x46ac0a0
jmp dword [0x46b6a0c]
xor ebx, ebx
cmp edx, dword [esp]
setne bl
jmp dword [ebx*4 + 0x46b6a10]
jmp dword [0x46b6a34]
mov esi, dword [esp + 0x34]
mov edx, dword [esi + ecx + 0x80]
mov ecx, dword [esi + ecx + 0x84]
mov esi, dword [case.0x46abcdc.38]
nop
nop
jmp esi
test ecx, ecx
sete cl
test edx, edx
sete ch
or ch, cl
movzx ecx, ch
jmp dword [ecx*4 + 0x46b6a48]
mov eax, dword [esp + 0x34]
mov esi, dword [eax + edx]
add esi, eax
mov ecx, dword [eax + edx + 0x10]
add ecx, eax
mov dword [esp + 0xc], ecx
mov edx, dword [case.0x46abcdc.44]
add eax, 2
mov dword [esp + 0x18], eax
mov dword [esp + 8], edx
jmp case.0x46abcdc.41
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 8]
xor ecx, ecx
jmp dword [ecx*4 + 0x46b6a78]
nop
nop
nop
nop
nop
nop
nop
jmp edx
mov edi, dword [esi]
mov ecx, edi
shr ecx, 0x1f
xor eax, eax
jmp dword [ecx*4 + 0x46b6a60]
xor ecx, ecx
test edi, edi
setne cl
jmp dword [ecx*4 + 0x46b6a68]
add edi, dword [esp + 0x18]
mov edx, 0xffffffff
xor eax, eax
nop
nop
nop
nop
nop
mov ebp, eax
cmp byte [edi + edx + 1], 0
lea edx, [edx + 1]
lea eax, [eax + 1]
jne 0x46ac1a0
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], esi
mov dword [esp], 0x2060499
mov word [esp + 4], 0
mov eax, 0x3e5e27e
mov ecx, 0x7c1a1d81
nop
movzx edi, byte [esp + ecx - 0x7c1a1d81]
mov ebx, eax
and ebx, 0x300220c
mov esi, ecx
and esi, 0x48100403
or esi, ebx
xor esi, edi
mov edi, esi
and edi, 1
xor esi, 0x8d
lea ebx, [esi + edi*2]
add bl, 0x7a
mov byte [esp + ecx - 0x7c1a1d81], bl
dec eax
inc ecx
cmp eax, 0x3e5e278
jne 0x46ac1d0
mov eax, 0x36c0b43e
test edx, edx
mov ebx, dword [esp + 0x1c]
je 0x46ac280
mov edi, dword [esp]
mov esi, 0x36c0b43e
cmp edx, 4
jb 0x46ac25b
mov eax, ebp
and eax, 0xfffffffc
nop
nop
nop
nop
movsx ecx, byte [ebx]
xor ecx, esi
imul ecx, edi
movsx esi, byte [ebx + 1]
xor esi, ecx
imul esi, edi
movsx ecx, byte [ebx + 2]
xor ecx, esi
imul ecx, edi
movsx esi, byte [ebx + 3]
add ebx, 4
xor esi, ecx
imul esi, edi
add eax, 0xfffffffc
jne 0x46ac230
mov eax, esi
test dl, 3
je 0x46ac280
and ebp, 3
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx eax, byte [ebx + edx]
xor eax, esi
imul eax, edi
inc edx
mov esi, eax
cmp ebp, edx
jne 0x46ac270
xor ecx, ecx
cmp eax, dword [esp + 0x38]
sete cl
jmp dword [ecx*4 + 0x46b6a70]
mov esi, dword [esp + 0x10]
add esi, 4
add dword [esp + 0xc], 4
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 8]
mov ecx, 1
jmp dword [ecx*4 + 0x46b6a78]
mov ecx, dword [case.0x46abd50.20]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [ebp + 0x3c]
add ecx, ebp
mov eax, dword [ecx]
mov edx, dword [case.0x46abcdc.57]
nop
nop
nop
nop
nop
jmp edx
mov dword [esp], 0x63622430
mov byte [esp + 4], 0
xor edx, edx
movzx esi, byte [esp + edx]
xor esi, 0xebcd2697
mov ebx, edx
xor ebx, 0x389323ff
mov edi, esi
and edi, ebx
add ebx, esi
add edi, edi
sub ebx, edi
add bl, 0xf8
mov byte [esp + edx], bl
lea esi, [edx + 1]
mov edx, esi
cmp esi, 5
jne case.default.0x46ac3a6
xor edx, edx
cmp eax, dword [esp]
setne dl
xor eax, eax
jmp dword [edx*4 + 0x46b6a98]
movzx eax, word [ecx + 0x14]
lea esi, [ecx + eax]
add esi, 0x18
movzx ecx, word [ecx + 6]
xor ebp, ebp
xor eax, eax
mov word [esp + 0xe], cx
cmp bp, cx
setb al
mov dword [esp + 8], 1
jmp dword [eax*4 + 0x46b6aa0]
xor eax, eax
xor ecx, ecx
test eax, 0
sete cl
jmp dword [ecx*4 + 0x46b6aa8]
inc ebp
add esi, 0x28
xor eax, eax
cmp bp, word [esp + 0xe]
setb al
jmp dword [eax*4 + 0x46b6aa0]
mov edx, 8
mov edi, dword [esp + 0x28]
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
sub edx, 1
jb 0x46ac3e0
movzx ebx, byte [edi]
inc edi
movzx ecx, byte [eax]
inc eax
cmp bl, cl
je case.default.0x46ac438
xor eax, eax
sub ebx, ecx
sete al
jmp dword [eax*4 + 0x46b6aa8]
xor eax, eax
mov ecx, dword [esp + 0x2c]
test ecx, ecx
setne al
jmp dword [eax*4 + 0x46b6ac0]
xor eax, eax
cmp dword [esp + 0x30], 0
setne al
mov dword [esp + 8], 0
jmp dword [eax*4 + 0x46b6ad8]
mov al, 1
mov ecx, dword [esp + 8]
jmp dword [ecx*4 + 0x46b6ae0]
xor eax, eax
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x24]
add eax, dword [esi + 0xc]
mov dword [ecx], eax
xor eax, eax
cmp dword [esp + 0x30], 0
setne al
mov dword [esp + 8], 0
jmp dword [eax*4 + 0x46b6ad8]
mov eax, dword [esi + 0x10]
mov ecx, dword [esp + 0x30]
mov dword [ecx], eax
xor ecx, ecx
mov al, 1
jmp dword [ecx*4 + 0x46b6ae0]
push 4
push edx
mov esp, -1135606678
push 4
add dword [eax], eax
add byte [eax], al
add dword [eax], eax
add byte [eax], al
add dword [eax], eax
add byte [eax], al
pop ecx
mov esp, 0xbc52046a
push 4
sbb al, 0xbc
add byte [ecx], al
add byte [eax], al
add byte [ecx - 0x44], bl
push 4
push edx
mov esp, 0xbc1c046a
push 4
add byte [edx + ebp*2 + 0x6abc3004], bh
add al, 0x30
mov esp, 0xbc30046a
push 4
xor byte [edx + ebp*2 + 0x6abc3204], bh
add al, 0x52
mov esp, 0xbc0c046a
mov esp, 0xbc52046a
push 4
or al, 0xbc
push 4
jecxz 0x46b6966
invalid
mov esp, 0xbf8b046a
push 4
push edi
mov ebp, -1081408406
push 4
jge 0x46b6977
push 4
mov edi, dword [edi - 0x42a8fb96]
push 4
mov edi, dword [edi - 0x4282fb96]
push 4
mov edi, dword [edi - 0x4081fb96]
push 4
sar byte [ebp - 0x40ddfb96], 1
push 4
add byte [edi - 0x408ffb96], bh
push 4
inc edi
mov edi, -1083177878
push 4
jle 0x46b699d
push 4
adc byte [edi - 0x40effb96], bh
push 4
adc bh, byte [edi - 0x40effb96]
push 4
mov edi, dword [edi - 0x4076fb96]
push 4
adc eax, eax
push 4
ret 0x6ac2
ret