Function at 0x43eac0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov eax, dword [esp + 0x40]
movzx eax, word [eax]
mov dword [esp], 0xc9caadbf
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor edx, edx
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + esi]
mov ebp, edx
and ebp, 6
mov ebx, esi
xor ebx, 0x7a6530d3
add ebx, ebp
xor ebx, edi
mov edi, 0x1f
sub edi, ebx
and ebx, 1
or edi, 1
sub ebx, edi
mov byte [esp + esi], bl
inc esi
add edx, 2
cmp esi, 7
jne case.default.0x43eb2e
xor edx, edx
cmp dword [esp], eax
setne dl
xor eax, eax
mov ebp, dword [esp + 0x40]
jmp dword [edx*4 + 0x449984]
jmp dword [0x449990]
mov edx, dword [ebp + 0x3c]
mov eax, dword [ebp + edx]
jmp dword [0x449994]
mov edx, dword [ebp + 0x3c]
mov eax, dword [ebp + edx]
jmp dword [0x449994]
mov dword [esp], 0x292a6074
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + esi]
lea edi, [esi + 0x4f0ef287]
and edi, ecx
add edi, edi
neg edi
lea ebx, [esi + edi]
add ebx, 0x4f0ef287
add ebx, ecx
mov edi, 2
sub edi, ebx
sub edi, ebx
not edi
and edi, 2
xor ebx, 1
add ebx, edi
add bl, 0x5c
mov byte [esp + esi], bl
mov ecx, esi
or ecx, 0x7801677d
and esi, 5
add esi, ecx
add esi, 0x87fe9884
cmp esi, 7
jb case.default.0x43ebd8
mov ecx, dword [esp]
xor ebx, ebx
cmp eax, ecx
setne bl
xor eax, eax
jmp dword [ebx*4 + 0x44999c]
mov esi, dword [ebp + edx + 0x7c]
mov edi, dword [ebp + edx + 0x78]
test esi, esi
sete cl
test edi, edi
sete dl
or dl, cl
movzx ecx, dl
mov dword [esp + 0x1c], edi
jmp dword [ecx*4 + 0x4499a4]
mov dword [esp + 0xc], esi
mov eax, dword [ebp + edi + 0x20]
add eax, ebp
mov dword [esp + 0x28], eax
mov eax, dword [ebp + edi + 0x24]
add eax, ebp
mov dword [esp + 0x14], eax
mov eax, dword [ebp + edi + 0x1c]
add eax, ebp
mov dword [esp + 0x10], eax
mov edx, dword [ebp + edi + 0x18]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x24], edx
cmp ecx, edx
setb al
mov dword [esp + 0x18], 1
jmp dword [eax*4 + 0x4499ac]
mov eax, dword [esp + 0x28]
mov dword [esp + 8], ecx
mov esi, dword [eax + ecx*4]
add esi, ebp
mov eax, esi
neg eax
mov edx, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
dec eax
cmp byte [edx], 0
lea edx, [edx + 1]
jne 0x43ec70
mov ebx, eax
not ebx
mov dword [esp], 0x36363897
mov dword [esp + 4], 0
mov edx, 0x25d1c9b6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx - 0x25d1c9b6]
lea ebp, [edx - 0x25d1c900]
and ebp, edi
add ebp, ebp
sub edi, ebp
add edi, edx
mov ebp, edi
and ebp, 0x71
xor edi, 0x71
lea ecx, [edi + ebp*2]
inc cl
mov byte [esp + edx - 0x25d1c9b6], cl
inc edx
cmp edx, 0x25d1c9be
jne 0x43eca0
mov ecx, esi
not ecx
and ebx, ecx
and eax, esi
mov ecx, ebx
sub ecx, eax
je 0x43ed00
mov edx, dword [esp]
mov edi, edx
not edi
inc eax
cmp ebx, eax
jne 0x43ed10
mov eax, 0x36c0b43e
jmp 0x43ed67
mov eax, 0x36c0b43e
mov ebp, dword [esp + 0x40]
jmp 0x43ed8d
mov dword [esp + 0x20], ecx
mov ebx, ecx
and ebx, 0xfffffffe
mov eax, 0x36c0b43e
nop
nop
movsx ebp, byte [esi]
xor ebp, eax
mov eax, ebp
or eax, edx
mov ecx, ebp
and ecx, edx
imul ecx, eax
mov eax, ebp
not eax
and eax, edx
and ebp, edi
imul ebp, eax
add ebp, ecx
movsx eax, byte [esi + 1]
add esi, 2
xor eax, ebp
mov ecx, eax
or ecx, edx
mov ebp, eax
and ebp, edx
imul ebp, ecx
mov ecx, eax
not ecx
and ecx, edx
and eax, edi
imul eax, ecx
add eax, ebp
add ebx, 0xfffffffe
jne 0x43ed20
mov ecx, dword [esp + 0x20]
test cl, 1
mov ebp, dword [esp + 0x40]
je 0x43ed8d
movsx ecx, byte [esi]
xor eax, ecx
mov ecx, eax
or ecx, edx
mov esi, eax
and esi, edx
imul esi, ecx
mov ecx, eax
not ecx
and ecx, edx
and eax, edi
imul eax, ecx
add eax, esi
xor ecx, ecx
cmp eax, dword [esp + 0x44]
setne cl
jmp dword [ecx*4 + 0x4499b4]
mov ecx, dword [esp + 8]
inc ecx
xor eax, eax
cmp ecx, dword [esp + 0x24]
setb al
jmp dword [eax*4 + 0x4499ac]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 8]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + eax*4]
xor ebx, ebx
mov edx, eax
sub edx, dword [esp + 0x1c]
setae bl
jmp dword [ebx*4 + 0x4499bc]
mov ecx, dword [esp + 0x18]
jmp dword [ecx*4 + 0x4499cc]
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret