Function at 0x4117f0
Capabilities:
Encode data using add xor sub operations
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x140
mov word [esp + 0x48], 0xb50b
mov dword [esp + 0x4a], 0
mov dword [esp + 0x4e], 0
mov dword [esp + 0x51], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xc
ja 0x41187c
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x48]
lea edx, [eax + 0x1e4d3599]
add eax, 0x99
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0xb8], edx
mov eax, dword [esp + 0xb8]
mov ecx, eax
xor ecx, 0xd0
and eax, 0x50
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 0x48], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xd
jb 0x411830
lea eax, [esp + 0x48]
push eax
push dword [ebp + 8]
call fcn.00402a30
add esp, 8
mov esi, eax
xor eax, eax
test esi, esi
sete al
mov eax, dword [eax*4 + 0x441a3c]
mov ecx, 0xf57009e5
xor ecx, dword [0x441a44]
add eax, ecx
inc eax
xor edx, edx
mov dword [esp + 0x2c], esi
jmp eax
cwde
cmp al, 0x9c
cmp al, 0xa0
cmp al, 0xa4
cmp al, 0xa8
cmp al, 0xac
cmp al, 0xb0
cmp al, 0xb4
cmp al, 0xb8
cmp al, 0xbc
cmp al, 0xc0
cmp al, 0xc4
cmp al, 0xc8
cmp al, 0xcc
cmp al, 0xd0
cmp al, 0xd4
cmp al, 0xd8
cmp al, 0xdc
cmp al, 0xe0
cmp al, 0xe4
cmp al, 0xe8
cmp al, 0xec
cmp al, 0xf0
cmp al, 0
cmp eax, 0x3d0c3d04
adc byte [0x3d1c3d18], bh
cmp al, 0x3d
inc eax
cmp eax, 0x3d5c3d58
jl 0x455e65
cmp byte [0x3d8c3d88], 0x94
cmp eax, 0x3da83d98
lodsb al, byte [esi]
cmp eax, 0x3db83db4
fdivr dword [0x3e0c3ddc]
adc byte [esi], bh
sbb byte [esi], bh
sbb al, 0x3e
and al, 0x3e
sub byte [esi], bh
xor byte [esi], bh
xor al, 0x3e
pop esp
pushal
js 0x455e92
jl 0x455e94
test byte [esi], bh
mov byte [esi], bh
nop
xchg esp, eax
movsb byte es:[edi], byte ds:[esi]
test al, 0x3e
mov al, 0x3e
mov ah, 0x3e
int3
int3
sar byte [edi], 1
aam 0x3f
fdivr qword [edi]
loopne 0x455ed9
call 0xf4854ade
aas
clc
aas
add byte [eax], al
add byte [eax + 4], dl
add byte [eax], ch
add eax, 0x30000000
add al, 0x30
or al, 0x30
adc byte [eax], dh
sbb byte [eax], dh
sbb al, 0x30
and al, 0x30
sub byte [eax], dh
xor byte [eax], dh
xor al, 0x30
cmp al, 0x30
inc eax
xor byte [eax + 0x30], cl
dec esp
xor byte [eax + esi + 0x58], dl
xor byte [eax + 0x30], ah
xor byte fs:[eax + esi + 0x70], ch
xor byte [eax + 0x30], bh
jl 0x455f08
test byte [eax], dh
mov byte [eax], dh
nop
xor byte [eax + esi + 0x30a0309c], dl
test al, 0x30
xor byte [eax - 0x6bcf6fd0], cl
xor byte [eax + esi + 0x30a830a0], bl
lodsb al, byte [esi]
xor byte [eax + esi + 0x30d030c0], bh
aam 0x30
in al, 0x30
call 0xf4764f27
xor ah, bh
xor byte [eax], al
xor dword [eax], edx
xor dword [ecx + esi], edx
sbb al, 0x31
and byte [ecx], dh
cmp byte [ecx], dh
cmp al, 0x31
inc esp
xor dword [eax + 0x31], ecx
push eax
xor dword [ecx + esi + 0x64], edx
xor dword [eax + 0x31], ebp
jo 0x455f47
je 0x455f49
jl 0x455f4b
xor byte [ecx], 0x90
xor dword [ecx + esi + 0x31a0319c], edx
sal byte [ecx], 0xc4
xor esp, ecx
xor eax, edx
xor eax, ebx
xor esp, ebx
xor esp, esp
xor eax, ebp
xor eax, esi
xor esp, esi
xor dword [edx + esi], eax
or byte [edx], dh
adc byte [edx], dh
adc al, 0x32
sbb al, 0x32
and byte [edx], dh
sub byte [edx], dh
sub al, 0x32
xor al, 0x32
xor dh, byte [edx + esi]
xor bh, byte [eax]
cmp byte [edx], dh
dec eax
xor cl, byte [edx + esi + 0x54]
xor bl, byte [eax + 0x32]
jo 0x455f88
xor cl, byte [eax + 0x32]
dec esp
xor dl, byte [edx + esi + 0x58]
xor dh, byte [eax + 0x32]
je 0x455f8a
jl 0x455f8c
xor byte [edx], 0xa8
xor ch, byte [edx + esi + 0x32b832b4]
sal byte [edx], 1
aam 0x32
fdiv qword [edx]
loopne 0x455f9e
sal byte [ebx], 0xc4
xor ecx, esp
xor edx, eax
xor ebx, eax
xor ebx, esp
xor esp, esp
xor ebp, eax
xor esi, eax
xor esi, esp
xor edi, esp
xor eax, dword [eax]
xor al, 8
xor al, 0xc
xor al, 0x14
xor al, 0x18
xor al, 0x20
adc al, 0x34
sbb byte [eax], dh
and byte [esp], dh
xor al, 0x24
xor al, 0x2c
xor al, 0x30
xor al, 0x38
xor al, 0x3c
xor al, 0x44
xor al, 0x48
xor al, 0x60
xor al, 0x64
xor al, 0x6c
xor al, 0x6c
xor al, 0x70
xor al, 0x78
xor al, 0x7c
xor al, 0x84
xor al, 0x88
xor al, 0x90
xor al, 0x94
xor al, 0x9c
xor al, 0xa0
xor al, 0xa8
xor al, 0xac
xor al, 0xc4
xor al, 0xc8
xor al, 0xd0
xor al, 0xd4
xor al, 4
xor eax, 0x35103508
adc al, 0x35
and al, 0x35
sub byte [0x35343530], dh
dec esp
xor eax, 0x35603550
xor eax, 0x3570356c
js 0x456013
jl 0x456015
pushfd
xor eax, 0x35c835a0
int3
or byte ss:[edi], dh
aaa
or al, 0x37
adc byte [edi], dh
adc al, 0x37
sbb byte [edi], dh
sbb al, 0x37
and byte [edi], dh
and al, 0x37
sub byte [edi], dh
sub al, 0x37
xor byte [edi], dh
xor al, 0x37
cmp byte [edi], dh
cmp al, 0x37
inc eax
aaa
inc esp
aaa
dec eax
aaa
dec esp
aaa
push eax
aaa
push esp
aaa
pop eax
aaa
pop esp
aaa
pushal
aaa
aaa
push 0x70376c37
aaa
je 0x456083
js 0x456085
jl 0x456087
xor byte [edi], 0x84
aaa
mov byte [edi], dh
invalid
aaa
call 0xf07d4cc0
aaa
hlt
aaa
in al, dx
aaa
invalid