Function at 0x43fc30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov edx, ecx
mov dword [ebp - 8], edx
test edi, edi
jns 0x43fc5c
mov edi, dword [ebp + 8]
lea ecx, [edi + 1]
nop dword [eax + eax]
mov al, byte [edi]
inc edi
test al, al
jne 0x43fc50
sub edi, ecx
mov dword [ebp + 0xc], edi
mov ecx, dword [ebp + 8]
mov esi, edi
or esi, 0x20
mov dword [ebp - 4], edi
shr esi, 5
mov ebx, edi
cmp edi, esi
jb 0x43fc9f
mov edx, ecx
mov ecx, edi
lea edx, [edx + 1]
mov eax, edi
shl ecx, 5
shr eax, 2
sub ebx, esi
add ecx, eax
movsx ax, byte [edx - 1]
movzx eax, ax
add ecx, eax
xor edi, ecx
cmp ebx, esi
jae 0x43fc72
mov edx, dword [ebp - 8]
mov ecx, dword [ebp + 8]
mov dword [ebp - 4], edi
mov edi, dword [ebp + 0xc]
mov eax, dword [edx + 4]
dec eax
and eax, dword [ebp - 4]
lea ebx, [eax*4]
mov eax, dword [edx]
mov dword [ebp + 0xc], ebx
mov ebx, dword [ebx + eax]
test ebx, ebx
je 0x43fd2b
nop dword [eax]
cmp dword [ebx + 0x14], edi
jne 0x43fd14
mov esi, edi
lea eax, [ebx + 0x1c]
mov edx, ecx
sub esi, 4
jb 0x43fce2
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x43fce7
add edx, 4
add eax, 4
sub esi, 4
jae 0x43fcd1
cmp esi, 0xfffffffc
je 0x43fd20
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x43fd14
cmp esi, 0xfffffffd
je 0x43fd20
mov cl, byte [edx + 1]
cmp cl, byte [eax + 1]
jne 0x43fd14
cmp esi, 0xfffffffe
je 0x43fd20
mov cl, byte [edx + 2]
cmp cl, byte [eax + 2]
jne 0x43fd14
cmp esi, 0xffffffff
je 0x43fd20
mov cl, byte [edx + 3]
cmp cl, byte [eax + 3]
je 0x43fd20
mov ebx, dword [ebx + 0x10]
test ebx, ebx
je 0x43fd2b
mov ecx, dword [ebp + 8]
jmp 0x43fcc0
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret 8
lea eax, [edi + 0x20]
push eax
call fcn.0043da70
mov ebx, dword [ebp - 8]
mov esi, eax
push edi
push dword [ebp + 8]
mov dword [ebp - 0xc], esi
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [esi], vtable.SQString.0
mov ecx, dword [ebx + 0xc]
mov dword [esi + 0xc], ecx
lea ecx, [esi + 0x1c]
push ecx
call fcn.0045ea40
mov eax, dword [ebp - 4]
add esp, 0x10
mov ecx, dword [ebp + 0xc]
mov byte [esi + edi + 0x1c], 0
mov dword [esi + 0x14], edi
mov dword [esi + 0x18], eax
mov eax, dword [ebx]
mov eax, dword [ecx + eax]
mov dword [esi + 0x10], eax
mov eax, dword [ebx]
mov dword [ecx + eax], esi
mov esi, dword [ebx + 4]
inc dword [ebx + 8]
mov dword [ebp + 0xc], esi
cmp dword [ebx + 8], esi
jbe 0x43fe0d
mov eax, dword [ebx]
mov dword [ebp + 8], eax
lea eax, [esi + esi]
mov dword [ebx + 4], eax
shl eax, 2
push eax
call fcn.0043da70
mov ecx, dword [ebx + 4]
shl ecx, 2
push ecx
push 0
push eax
mov dword [ebx], eax
call fcn.0045e8a0
add esp, 0x10
xor edi, edi
test esi, esi
jle 0x43fdfa
mov eax, dword [ebp + 8]
mov esi, dword [eax + edi*4]
test esi, esi
je 0x43fdf2
nop word [eax + eax]
mov eax, dword [ebx + 4]
mov ecx, dword [esi + 0x18]
dec eax
mov edx, dword [esi + 0x10]
and ecx, eax
mov eax, dword [ebx]
mov eax, dword [eax + ecx*4]
mov dword [esi + 0x10], eax
mov eax, dword [ebx]
mov dword [eax + ecx*4], esi
mov esi, edx
test edx, edx
jne 0x43fdd0
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
inc edi
cmp edi, esi
jl 0x43fdc3
lea eax, [esi*4]
push eax
push dword [ebp + 8]
call fcn.0043da60
add esp, 8
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8