Function at 0x43f502
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x3c
mov eax, dword [esp + 0x50]
movzx eax, word [eax]
mov dword [esp], 0x97963f2d
mov byte [esp + 4], 0
mov ecx, 0x26
mov edx, 0xd9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x26]
mov ebx, edx
xor ebx, ecx
and ebx, esi
xor ebx, ecx
add bl, 0x42
mov byte [esp + ecx - 0x26], bl
inc ecx
dec edx
cmp ecx, 0x2b
jne case.default.0x43f215
xor ecx, ecx
cmp dword [esp], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x44a600]
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + 0x3c]
mov eax, dword [eax + ecx]
mov dword [esp], 0x595a0014
xor edx, edx
nop
mov ebx, edx
add bl, 0x6f
xor bl, byte [esp + edx]
add bl, 0xd5
mov byte [esp + edx], bl
inc edx
cmp edx, 4
jne case.default.0x43f250
mov edx, dword [esp]
xor ebx, ebx
cmp eax, edx
setne bl
xor eax, eax
jmp dword [ebx*4 + 0x44a608]
mov edx, dword [esp + 0x50]
mov esi, dword [edx + ecx + 0x7c]
mov edi, dword [edx + ecx + 0x78]
mov dword [esp + 0x20], esi
test esi, esi
sete cl
test edi, edi
sete dl
or dl, cl
movzx ecx, dl
jmp dword [ecx*4 + 0x44a610]
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + edi + 0x20]
add ecx, eax
mov dword [esp + 0x34], ecx
mov ecx, dword [eax + edi + 0x24]
add ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, dword [eax + edi + 0x1c]
add ecx, eax
mov dword [esp + 0x14], ecx
mov eax, dword [eax + edi + 0x18]
mov ecx, dword [case.0x43f215.7]
mov dword [esp + 0x2c], ecx
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x28], eax
cmp ebx, eax
setb cl
mov eax, dword [case.0x43f215.10]
mov dword [esp + 0x30], eax
mov edx, dword [case.0x43f215.19]
mov dword [esp + 0x10], 1
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], edx
jmp dword [ecx*4 + 0x44a618]
mov dword [esp + 0x38], ebx
jmp dword [esp + 0x2c]
mov dword [esp], 0xf6faf441
lea eax, [esp + 4]
mov byte [eax + 2], 0
mov word [eax], 0
xor eax, eax
nop
nop
mov ecx, eax
and ecx, 1
mov edx, eax
and edx, 2
lea esi, [ecx + 2]
imul esi, edx
mov edi, edx
xor edi, 2
imul edi, ecx
mov edx, eax
xor edx, 0xab
add edx, edi
add edx, esi
xor dl, byte [esp + eax]
add dl, 0xa9
mov byte [esp + eax], dl
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 7
jb 0x43f300
mov eax, dword [esp + 0x34]
mov eax, dword [eax + ebx*4]
add eax, dword [esp + 0x50]
mov ecx, 0xffffffff
xor edx, edx
nop
nop
nop
nop
nop
nop
mov ebp, edx
cmp byte [eax + ecx + 1], 0
lea ecx, [ecx + 1]
lea edx, [edx + 1]
jne 0x43f350
mov dword [esp + 8], eax
mov dword [esp], 0xf6faf441
lea eax, [esp + 4]
mov byte [eax + 2], 0
mov word [eax], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
mov esi, edx
and esi, 1
mov edi, edx
and edi, 2
lea eax, [esi + 2]
imul eax, edi
xor edi, 2
imul edi, esi
mov ebx, edx
xor ebx, 0xab
add ebx, edi
add ebx, eax
xor bl, byte [esp + edx]
add bl, 0xa9
mov byte [esp + edx], bl
xor edx, 1
lea edx, [edx + esi*2]
cmp edx, 7
jb 0x43f380
mov edx, 0x3205b60c
test ecx, ecx
je 0x43f453
mov edi, dword [esp]
mov esi, edi
not esi
cmp ecx, 1
je 0x43f42f
and ebp, 0xfffffffe
mov dword [esp + 0xc], esi
mov esi, dword [esp + 8]
nop
nop
nop
nop
nop
nop
movsx ebx, byte [esi]
xor ebx, edx
mov eax, ebx
and eax, dword [esp + 0xc]
mov edx, ebx
not edx
and edx, edi
imul edx, eax
mov eax, ebx
and eax, edi
or ebx, edi
imul ebx, eax
add ebx, edx
movsx edx, byte [esi + 1]
add esi, 2
xor edx, ebx
mov eax, edx
and eax, dword [esp + 0xc]
mov ebx, edx
not ebx
and ebx, edi
imul ebx, eax
mov eax, edx
and eax, edi
or edx, edi
imul edx, eax
add edx, ebx
add ebp, 0xfffffffe
jne 0x43f3e0
mov dword [esp + 8], esi
mov esi, dword [esp + 0xc]
test cl, 1
je 0x43f453
mov eax, dword [esp + 8]
movsx eax, byte [eax]
xor edx, eax
and esi, edx
mov eax, edx
not eax
and eax, edi
imul eax, esi
mov ecx, edx
and ecx, edi
or edx, edi
imul edx, ecx
add edx, eax
mov ebx, dword [esp + 0x38]
jmp dword [esp + 0x30]
xor eax, eax
cmp edx, dword [esp + 0x54]
setne al
jmp dword [eax*4 + 0x44a630]
mov eax, ebx
or eax, 1
mov ecx, ebx
xor ecx, 0x7ffffffe
and ecx, eax
xor ebx, 1
lea ebx, [ebx + ecx*2]
mov edx, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp edx
xor ecx, ecx
cmp ebx, dword [esp + 0x28]
setb cl
jmp dword [ecx*4 + 0x44a618]
mov eax, dword [esp + 0x18]
movzx eax, word [eax + ebx*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 + 0x44a638]
mov eax, ecx
xor eax, esi
not esi
and esi, ecx
add esi, esi
sub esi, eax
xor edx, edx
cmp esi, dword [esp + 0x20]
setb dl
jmp dword [edx*4 + 0x44a640]
mov eax, dword [esp + 0x50]
add eax, ecx
mov dword [esp + 0x10], 0
mov ecx, dword [case.0x43f215.23]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
mov ecx, dword [esp + 0x10]
jmp dword [ecx*4 + 0x44a668]
xor eax, eax
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
push eax
mov eax, esp
mov dword [eax], 0x717ed5a3
mov ecx, 0x54a3ed95
nop
nop
nop
movzx edx, byte [eax + ecx - 0x54a3ed95]
lea esi, [ecx - 0x2a51f700]
mov edi, ecx
and edi, edx
or esi, edx
lea edx, [esi + esi]
not edx
add edx, esi
or edx, edi
mov bl, 0x16
sub bl, dl
mov byte [eax + ecx - 0x54a3ed95], bl
inc ecx
cmp ecx, 0x54a3ed99
jne 0x43f540
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push eax
mov eax, esp
sub esp, 8
mov dword [ebp - 0x14], esp
mov ecx, dword [ebp + 8]
movzx ecx, word [ecx]
mov dword [ebp - 0x10], ecx
mov dword [eax], 0x717ed5a3
mov esi, 0x54a3ed95
nop
nop
nop
movzx edi, byte [eax + esi - 0x54a3ed95]
lea edx, [esi - 0x2a51f700]
mov ecx, esi
and ecx, edi
or edx, edi
lea ebx, [edx + edx]
not ebx
add ebx, edx
or ebx, ecx
mov cl, 0x16
sub cl, bl
mov byte [eax + esi - 0x54a3ed95], cl
inc esi
cmp esi, 0x54a3ed99
jne 0x43f5a0
jmp dword [0x44a678]
xor ecx, ecx
mov edx, dword [ebp - 0x10]
cmp dword [eax], edx
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x44a680]
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x3c]
mov esi, dword [eax + edx]
mov ecx, dword [ebp - 0x14]
mov dword [ecx], 0x37366468
mov word [ecx + 4], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x36
xor al, byte [ecx + ebx]
add al, 0xf2
mov byte [ecx + ebx], al
mov eax, ebx
and eax, 1
xor ebx, 1
lea ebx, [ebx + eax*2]
cmp ebx, 6
jb case.default.0x43f635
xor ebx, ebx
cmp esi, dword [ecx]
setne bl
xor eax, eax
jmp dword [ebx*4 + 0x44a688]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + edx + 0x80]
cmp dword [eax + edx + 0x84], 0
sete al
test ecx, ecx
sete dl
or dl, al
movzx edx, dl
xor eax, eax
jmp dword [edx*4 + 0x44a690]
mov edx, dword [ebp + 8]
mov esi, dword [edx + ecx]
add esi, edx
mov ecx, dword [edx + ecx + 0x10]
add ecx, edx
mov dword [ebp - 0x18], ecx
add edx, 2
mov dword [ebp - 0x34], edx
mov ebx, dword [esi]
mov ecx, ebx
shr ecx, 0x1f
mov edx, dword [0x44a6b8]
mov dword [ebp - 0x30], edx
jmp dword [ecx*4 + 0x44a698]
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
xor ecx, ecx
mov dword [ebp - 0x2c], eax
mov esi, dword [ebp - 0x1c]
jmp dword [ecx*4 + 0x44a6c0]
xor ecx, ecx
test ebx, ebx
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x44a6a0]
add ebx, dword [ebp - 0x34]
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
inc eax
cmp byte [ebx + ecx], 0
jne 0x43f6e0
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x24], 0xf6faf441
lea ecx, [ebp - 0x20]
mov byte [ecx + 2], 0
mov word [ecx], 0
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, edi
and esi, 1
mov edx, edi
and edx, 2
lea ebx, [esi + 2]
imul ebx, edx
xor edx, 2
imul edx, esi
mov ecx, edi
xor ecx, 0xab
add ecx, edx
add ecx, ebx
xor cl, byte [ebp + edi - 0x24]
add cl, 0xa9
mov byte [ebp + edi - 0x24], cl
xor edi, 1
lea edi, [edi + esi*2]
cmp edi, 7
jb 0x43f710
mov ecx, 0x3205b60c
cmp eax, 1
mov ebx, dword [ebp - 0x38]
je 0x43f7f0
lea ecx, [eax - 1]
mov dword [ebp - 0x28], ecx
mov edi, dword [ebp - 0x24]
mov edx, edi
not edx
mov ecx, 0x3205b60c
cmp eax, 2
je 0x43f7cf
mov esi, dword [ebp - 0x10]
and esi, 0xfffffffe
mov dword [ebp - 0x14], edx
nop
nop
nop
nop
nop
nop
nop
mov dword [ebp - 0x10], esi
movsx eax, byte [ebx]
xor eax, ecx
mov edx, eax
mov esi, dword [ebp - 0x14]
and edx, esi
mov ecx, eax
not ecx
and ecx, edi
imul ecx, edx
mov edx, eax
and edx, edi
or eax, edi
imul eax, edx
add eax, ecx
movsx ecx, byte [ebx + 1]
xor ecx, eax
mov edx, ecx
and edx, esi
mov eax, ecx
not eax
and eax, edi
imul eax, edx
mov edx, ecx
and edx, edi
or ecx, edi
imul ecx, edx
mov esi, dword [ebp - 0x10]
add ecx, eax
add ebx, 2
add esi, 0xfffffffe
jne 0x43f780
mov edx, dword [ebp - 0x14]
test byte [ebp - 0x28], 1
je 0x43f7f0
movsx eax, byte [ebx]
xor ecx, eax
and edx, ecx
mov eax, ecx
not eax
and eax, edi
imul eax, edx
mov edx, ecx
and edx, edi
or ecx, edi
imul ecx, edx
add ecx, eax
xor eax, eax
cmp ecx, dword [ebp + 0xc]
sete al
mov edx, dword [ebp - 0x30]
jmp dword [eax*4 + 0x44a6a8]
jmp edx
mov ecx, dword [case.0x43f635.1]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret