Function at 0x55a170
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x10]
sub esp, 0x38
push edi
mov edi, ecx
test eax, eax
jne 0x55a189
mov al, 1
pop edi
mov esp, ebp
pop ebp
ret 0x14
push esi
mov esi, dword [ebp + 0xc]
test esi, esi
jne 0x55a1aa
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx]
mov edx, dword [eax + 0x14]
push str.NULL_passed_to_CFB_decryptor
call edx
pop esi
xor al, al
pop edi
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [edi + 0x80]
cmp ecx, 1
ja 0x55a1d4
mov ecx, dword [ebp + 0x18]
mov edx, dword [edi]
mov edx, dword [edx + 0x1c]
push ecx
mov ecx, dword [ebp + 0x14]
push ecx
push eax
mov eax, dword [ebp + 8]
push esi
push eax
mov ecx, edi
call edx
pop esi
pop edi
mov esp, ebp
pop ebp
ret 0x14
xor edx, edx
div ecx
test edx, edx
je 0x55a1f5
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx]
mov edx, dword [eax + 0x14]
push str.CFB_decrypt_input_not_a_multiple_of_the_cipher_block_size.
call edx
pop esi
xor al, al
pop edi
mov esp, ebp
pop ebp
ret 0x14
mov dword [ebp - 8], eax
test eax, eax
je 0x55a1eb
mov al, byte [0x8a0274]
mov ecx, dword [ebp + 0x14]
push ebx
mov byte [ebp - 1], al
call fcn.004033b0
mov ecx, dword [ebp + 0x10]
mov ebx, eax
lea eax, [ebx + ecx]
mov ecx, dword [ebp + 0x14]
mov dword [ebp + 0x10], eax
add eax, 0x20
push eax
call fcn.00413a50
test al, al
jne 0x55a242
mov ecx, dword [ebp + 0x18]
mov edx, dword [ecx]
mov eax, dword [edx + 0x14]
push str.Unable_to_allocate_CFB_decrypt_output_buffer.
call eax
pop ebx
pop esi
xor al, al
pop edi
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [ebp + 0x14]
push ebx
call fcn.0040fc00
cmp byte [ebp - 1], 0
mov ebx, eax
mov eax, dword [edi + 0x80]
je 0x55a31c
mov ecx, dword [ebp + 8]
add ecx, 8
mov edx, esi
mov dword [ebp - 0xc], ecx
mov dword [ebp + 8], edx
mov dword [ebp + 0x18], ebx
test eax, eax
je 0x55a280
push eax
push ecx
lea eax, [ebp - 0x28]
push eax
call fcn.0070d6a0
add esp, 0xc
mov edx, dword [edi]
mov edx, dword [edx + 0x10]
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x28]
push ecx
mov ecx, edi
call edx
xor ecx, ecx
cmp dword [edi + 0x80], ecx
jbe 0x55a2c5
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 0x18]
lea eax, [ebp - 0x38]
sub esi, eax
sub edx, eax
jmp 0x55a2b0
lea eax, [ebp + ecx - 0x38]
mov bl, byte [esi + eax]
xor bl, byte [eax]
inc ecx
mov byte [edx + eax], bl
cmp ecx, dword [edi + 0x80]
jb 0x55a2b0
mov esi, dword [edi + 0x80]
add dword [ebp + 0x18], esi
xor eax, eax
test esi, esi
je 0x55a2ee
mov edx, dword [ebp + 8]
lea ecx, [ebp - 0x28]
sub edx, ecx
lea esp, [esp]
lea ecx, [ebp + eax - 0x28]
mov bl, byte [edx + ecx]
inc eax
mov byte [ecx], bl
cmp eax, esi
jb 0x55a2e0
add dword [ebp + 8], esi
dec dword [ebp - 8]
jne 0x55a280
xor ecx, ecx
cmp esi, ecx
jbe 0x55a418
mov eax, dword [ebp - 0xc]
lea esi, [ebp - 0x28]
sub esi, eax
mov dl, byte [esi + eax]
mov byte [eax], dl
inc ecx
inc eax
cmp ecx, dword [edi + 0x80]
jb 0x55a308
jmp 0x55a418
cmp eax, 0x10
jne 0x55a3c4
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x28], ecx
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x24], edx
mov edx, dword [eax + 0x14]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], edx
sub ebx, esi
mov eax, dword [edi]
mov eax, dword [eax + 0x10]
lea ecx, [ebp - 0x18]
push ecx
lea edx, [ebp - 0x28]
push edx
mov ecx, edi
call eax
mov ecx, dword [esi]
mov edx, dword [esi + 4]
xor ecx, dword [ebp - 0x18]
xor edx, dword [ebp - 0x14]
mov dword [ebx + esi], ecx
mov dword [ebx + esi + 4], edx
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
xor eax, dword [ebp - 0x10]
xor ecx, dword [ebp - 0xc]
mov dword [ebx + esi + 8], eax
mov dword [ebx + esi + 0xc], ecx
mov edx, dword [esi + 8]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [ebp - 0x20], edx
mov edx, dword [esi + 0xc]
add esi, 0x10
dec dword [ebp - 8]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x1c], edx
jne 0x55a342
mov edx, dword [ebp + 8]
mov dword [edx + 0xc], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [edx + 8], eax
mov eax, dword [ebp - 0x20]
mov dword [edx + 0x14], ecx
mov ecx, dword [ebp + 0x14]
mov dword [edx + 0x10], eax
mov edx, dword [ebp + 0x10]
push edx
call fcn.0040fe10
pop ebx
pop esi
mov al, 1
pop edi
mov esp, ebp
pop ebp
ret 0x14
cmp eax, 8
jne 0x55a424
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0xc], edx
mov eax, dword [edi]
mov eax, dword [eax + 0x10]
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x10]
push edx
mov ecx, edi
call eax
mov ecx, dword [esi]
mov edx, dword [esi + 4]
xor ecx, dword [ebp - 0x20]
xor edx, dword [ebp - 0x1c]
mov dword [ebx], ecx
mov dword [ebx + 4], edx
mov eax, dword [esi]
mov ecx, dword [esi + 4]
add ebx, 8
add esi, 8
dec dword [ebp - 8]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], ecx
jne 0x55a3d8
mov edx, dword [ebp + 8]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ecx
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x14]
push eax
call fcn.0040fe10
pop ebx
pop esi
mov al, 1
pop edi
mov esp, ebp
pop ebp
ret 0x14