Function at 0x43f64b
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov dword [esp + 4], 0x818687f4
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
mov eax, 0x21
mov ecx, 0xde
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x1d]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0x5b
mov byte [esp + eax - 0x1d], dl
inc eax
dec ecx
cmp eax, 0x28
jne case.default.0x43f52c
mov eax, dword [esp + 4]
mov eax, dword fs:[eax]
xor ecx, ecx
cmp dword [esp + 0x28], 0
sete cl
jmp dword [ecx*4 + 0x44ac64]
mov edx, dword [eax + 0xc]
add edx, 0xc
mov dword [esp], 0
mov esi, dword [case.0x43f52c.8]
mov edi, dword [edx]
xor eax, eax
cmp edi, edx
setne al
mov dword [esp + 0xc], edx
jmp dword [eax*4 + 0x44ac6c]
mov eax, dword [esp + 0x10]
jmp dword [eax*4 + 0x44ac94]
mov edi, dword [edi]
xor eax, eax
cmp edi, edx
setne al
jmp dword [eax*4 + 0x44ac6c]
mov ebp, dword [edi + 0x30]
xor eax, eax
test ebp, ebp
setne al
mov dword [esp + 0x10], 1
jmp dword [eax*4 + 0x44ac74]
mov ecx, dword [esp + 0x28]
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [ecx]
lea eax, [edx - 0x41]
cmp ax, 0x1a
jae 0x43f5ba
mov eax, edx
xor eax, 0x20
add eax, edx
and edx, 0xffffffdf
sub eax, edx
mov edx, eax
movzx eax, word [ebp]
lea ebx, [eax - 0x41]
cmp bx, 0x1a
jae 0x43f5d5
mov ebx, eax
xor ebx, 0x20
add ebx, eax
and eax, 0xffffffdf
sub ebx, eax
mov eax, ebx
test dx, dx
je case.0x43f52c.5
add ebp, 2
add ecx, 2
cmp dx, ax
je 0x43f5a0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp esi
xor ecx, ecx
cmp dx, ax
sete cl
mov edx, dword [esp + 0xc]
jmp dword [ecx*4 + 0x44ac8c]
mov eax, dword [edi + 0x18]
mov dword [esp], eax
xor eax, eax
jmp dword [eax*4 + 0x44ac94]
mov eax, dword [eax + 8]
mov dword [esp], eax
mov eax, dword [esp]
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
push eax
push eax
mov edx, esp
sub esp, 8
mov ecx, esp
jmp eax
mov dword [ebp - 0x18], ecx
sub esp, 8
mov dword [ebp - 0x10], esp
mov dword [edx], 0x979699c8
mov word [edx + 4], 0
mov byte [edx + 6], 0
xor edi, edi
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [ebp - 0x14], edx
movzx eax, byte [edx + ecx]
mov edx, edi
and edx, 0xc
mov ebx, ecx
xor ebx, 0xff6e17a6
add ebx, edx
xor ebx, eax
mov eax, ebx
not eax
or eax, 0x2d989c1
lea edx, [ebx + eax]
inc edx
mov esi, edx
and esi, 2
mov eax, edx
or edx, 2
imul edx, esi
xor esi, 2
and eax, 0xfd
imul eax, esi
xor ebx, 0xc1
add ebx, edx
mov edx, dword [ebp - 0x14]
add ebx, eax
inc bl
mov byte [edx + ecx], bl
inc ecx
add edi, 2
cmp ecx, 7
jne case.default.0x43f6d7
mov eax, dword [edx]
mov eax, dword fs:[eax]
xor ecx, ecx
mov esi, dword [ebp + 8]
test esi, esi
sete cl
jmp dword [ecx*4 + 0x44acbc]
mov esi, dword [eax + 8]
mov eax, dword [case.0x43f6d7.4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
jmp dword [0x44acdc]
movzx ecx, word [esi]
mov edi, dword [ebp - 0x18]
mov dword [edi], 0x8382dbcd
mov byte [edi + 4], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edi + edx]
xor al, dl
xor al, 0xa0
add al, 0xe0
mov byte [edi + edx], al
inc edx
cmp edx, 5
jne case.default.0x43f73a
xor edx, edx
cmp dword [edi], ecx
sete dl
jmp dword [edx*4 + 0x44ace4]
mov edx, dword [case.0x43f73a.3]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
jmp edx
xor edx, edx
test ecx, ecx
sete dl
jmp dword [edx*4 + 0x44ad0c]
mov eax, dword [esi + 0x3c]
mov dword [ebp - 0x14], esi
mov esi, dword [esi + eax]
mov ecx, dword [ebp - 0x10]
mov dword [ecx], 0x1312ccc0
mov word [ecx + 4], 0
mov byte [ecx + 6], 0
mov edi, 0x25a39afc
mov ebx, 3
nop
nop
nop
nop
nop
mov ecx, dword [ebp - 0x10]
movzx edx, byte [ecx + edi - 0x25a39afc]
mov ecx, ebx
xor ecx, edi
and ecx, edx
xor ecx, edi
mov edx, 0x18
sub edx, ecx
add ecx, 0x27
and edx, 0xd4
and ecx, 0x2b
sub ecx, edx
mov edx, dword [ebp - 0x10]
inc cl
mov byte [edx + edi - 0x25a39afc], cl
inc edi
dec ebx
cmp edi, 0x25a39b03
jne 0x43f790
xor ecx, ecx
cmp esi, dword [edx]
sete cl
jmp dword [ecx*4 + 0x44acec]
xor ecx, ecx
mov edx, 1
jmp dword [edx*4 + 0x44acf4]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx + eax + 0x50]
mov ecx, 1
xor edx, edx
jmp dword [edx*4 + 0x44acf4]
cmc
inc ebx
add byte [esi + esi*8], dl
inc ebx
add byte [edx], bl
test byte [ebx], 0x7b
cmc
inc ebx
add byte [eax - 0xb], ah
inc ebx
add byte [ebp + esi*8 - 0xa0fffbd], dl
inc ebx
add al, dh
cmc
inc ebx
add al, dh
cmc
inc ebx
add dl, dh
cmc
inc ebx
add byte [eax - 0xb], ah
inc ebx
add byte [0x1a0043f6], al
test byte [ebx], 0x6b
cmc
inc ebx
add byte [eax - 0xa], al
inc ebx
add byte [eax - 0xa], al
inc ebx
add byte [ebx - 0xa], cl
inc ebx
add byte [eax - 0xa], al
inc ebx
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ebx - 0xa], cl
inc ebx
add byte [ecx], al
add byte [eax], al
add byte [esi], al
test dword [ebx], case.0x43f6d7.0
invalid