Function at 0x43fb90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x18
mov dword [esp + 0xc], ecx
cmp dword [ecx + 8], 0
je 0x43fc50
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
test eax, eax
je 0x43fc50
mov dword [esp + 8], eax
mov dword [esp], 0x54554a4b
xor edi, edi
mov eax, 0xffffffff
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + edi]
mov ecx, eax
or ecx, 0x438376e
add ecx, edi
mov esi, edi
xor esi, 0x8438376e
lea esi, [esi + ecx*2]
add esi, 2
mov ecx, esi
and ecx, edx
mov ebx, esi
not ebx
and ebx, edx
xor esi, edx
add esi, edx
not esi
add esi, ebx
or esi, ecx
lea ecx, [esi + esi]
not ecx
add ecx, esi
mov edx, ecx
and edx, 0x59
xor ecx, 0x6ae6ead9
lea edx, [ecx + edx*2]
and ecx, 1
xor edx, 1
lea ecx, [edx + ecx*2]
mov byte [esp + edi], cl
inc edi
dec eax
cmp edi, 4
jne 0x43fbd0
mov eax, dword [esp]
mov edx, dword [0x452d58]
test edx, edx
je 0x43fca4
xor ecx, ecx
mov esi, dword [0x452d5c]
mov edi, dword [ebp + 0x10]
cmp dword [esi + ecx*8], 0xdef797a3
je 0x43fca9
inc ecx
cmp edx, ecx
jne 0x43fc40
jmp 0x43fcc9
mov dword [esp], 0xb10e0f04
mov dword [esp + 4], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx]
mov edi, eax
and edi, 0xa
mov edx, ecx
xor edx, 0x1694323d
add edx, edi
mov edi, edx
and edi, esi
add edx, esi
add edi, edi
sub edx, edi
add dl, 0xcf
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 8
jne 0x43fc70
mov eax, dword [esp]
jmp 0x43fe03
mov edi, dword [ebp + 0x10]
jmp 0x43fcc9
mov ecx, dword [esi + ecx*8 + 4]
cmp ecx, eax
je 0x43fcc9
push dword [ebp + 8]
push dword [esp + 0xc]
push 2
push dword [0x452d60]
push ecx
call fcn.004427e0
add esp, 0x14
cmp dword [ebp + 0xc], 1
mov ecx, edi
sbb ecx, 0
jl 0x43fdf2
cmp eax, 0xc000010a
jne 0x43fdf2
mov ecx, dword [ebp + 0xc]
mov ebx, ecx
and ebx, 0x270f
mov esi, ecx
and esi, 0xffffd8f0
mov eax, esi
xor eax, 0xffffd8f0
mul ebx
mov dword [esp + 8], eax
mov eax, edi
not eax
imul eax, ebx
add edx, eax
mov ebx, edx
or ecx, 0xffffd8f0
imul edi, ecx
mov eax, ecx
mul esi
add edx, edi
sub edx, esi
add eax, dword [esp + 8]
adc edx, ebx
mov dword [esp], eax
mov dword [esp + 4], edx
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
mov dword [esp + 8], eax
mov dword [esp + 0x10], 0x54554a4b
xor esi, esi
mov eax, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + esi + 0x10]
mov edi, eax
or edi, 0x438376e
add edi, esi
mov ebx, esi
xor ebx, 0x8438376e
lea edi, [ebx + edi*2]
add edi, 2
mov ebx, edi
and ebx, ecx
mov edx, edi
not edx
and edx, ecx
xor edi, ecx
add edi, ecx
not edi
add edi, edx
or edi, ebx
lea ecx, [edi + edi]
not ecx
add ecx, edi
mov edx, ecx
and edx, 0x59
xor ecx, 0x6ae6ead9
lea edx, [ecx + edx*2]
and ecx, 1
xor edx, 1
lea ecx, [edx + ecx*2]
mov byte [esp + esi + 0x10], cl
inc esi
dec eax
cmp esi, 4
jne 0x43fd50
mov eax, dword [esp + 0x10]
mov ecx, dword [0x452d58]
test ecx, ecx
je 0x43fdf2
xor esi, esi
mov edi, dword [0x452d5c]
cmp dword [edi + esi*8], 0x53f09cfa
je 0x43fdd0
inc esi
cmp ecx, esi
jne 0x43fdc0
jmp 0x43fdf2
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, eax
je 0x43fdf2
mov eax, esp
push eax
push 0
push dword [esp + 0x10]
push 3
push dword [0x452d60]
push ecx
call fcn.004427e0
add esp, 0x18
test eax, eax
js 0x43fe03
mov ecx, dword [esp + 0xc]
mov esi, eax
call fcn.0043faa0
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc