Function at 0x6fa1f5a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
test ebx, ebx
je 0x6fa1fc19
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x6fa1f5c7
test esi, esi
je 0x6fa1fbb0
cmp dword [ebx + 0x10fc], 0x10
ja 0x6fa1f640
mov eax, dword [ebx + 0x10f0]
mov dword [esp], eax
call fcn.6fa1c580
test eax, eax
mov edi, eax
jne 0x6fa1f645
mov edx, dword [ebx + 0x10f8]
test edx, edx
jne 0x6fa1f630
mov eax, dword [ebx + 0x10fc]
test eax, eax
jne 0x6fa1f650
mov ebp, dword [ebx + 0x1104]
or ebp, dword [ebx + 0x1100]
je 0x6fa1fb30
lea ecx, [ebx + 0x10e0]
lea eax, [ebx + 0x10b0]
lea ebp, [ebx + 0x10c0]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], eax
jmp 0x6fa1f77c
cmp edx, 1
je 0x6fa1fb40
lea esi, [esi]
mov edi, 0x10
add esp, 0x2c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebx + 0x10f4]
lea ecx, [ebx + 0x10e0]
lea ebp, [ebx + 0x10c0]
mov dword [esp + 0x18], ecx
test edx, edx
jne 0x6fa1f6a0
cmp eax, 0xc
jne 0x6fa1f6a0
mov eax, dword [ebx + 0x10e0]
mov dword [ebx + 0x10c0], eax
mov edx, dword [ecx + 4]
mov dword [ebp + 4], edx
mov ecx, dword [ecx + 8]
mov dword [ebp + 8], ecx
mov dword [ebx + 0x10cc], 0x1000000
jmp 0x6fa1f81b
lea edx, [eax - 1]
cmp edx, 2
jbe 0x6fa1fc0c
mov edx, eax
mov ecx, dword [ebx + 0x10e0]
xor dword [ebx + 0x10b0], ecx
shr edx, 2
cmp edx, 1
je 0x6fa1f6f6
mov ecx, dword [ebx + 0x10e4]
xor dword [ebx + 0x10b4], ecx
cmp edx, 2
je 0x6fa1f6f6
mov ecx, dword [ebx + 0x10e8]
xor dword [ebx + 0x10b8], ecx
cmp edx, 3
je 0x6fa1f6f6
mov edx, dword [ebx + 0x10bc]
xor edx, dword [ebx + 0x10ec]
mov dword [ebx + 0x10bc], edx
mov ecx, eax
and ecx, 0xfffffffc
cmp ecx, eax
mov dword [esp + 0x14], ecx
je 0x6fa1f746
mov edx, dword [esp + 0x14]
movzx ecx, byte [ebx + edx + 0x10e0]
xor byte [ebx + edx + 0x10b0], cl
lea ecx, [edx + 1]
cmp ecx, eax
jae 0x6fa1f746
movzx edx, byte [ebx + edx + 0x10e1]
xor byte [ebx + ecx + 0x10b0], dl
mov edx, dword [esp + 0x14]
add edx, 2
cmp edx, eax
jae 0x6fa1f746
movzx ecx, byte [ebx + edx + 0x10e0]
xor byte [ebx + edx + 0x10b0], cl
lea edx, [ebx + 0x10b0]
mov ecx, eax
mov dword [esp + 0x14], edx
mov edx, eax
sar edx, 0x1f
mov eax, edx
mov edx, dword [esp + 0x14]
shld eax, ecx, 3
shl ecx, 3
add dword [ebx + 0x1100], ecx
adc dword [ebx + 0x1104], eax
mov dword [esp + 4], edx
mov dword [esp], ebx
call fcn.6fa16190
mov edx, dword [esp + 0x18]
mov dword [esp + 4], 8
mov dword [esp], edx
call fcn.6fa1cfe0
mov eax, dword [ebx + 0x1100]
mov edx, dword [ebx + 0x1104]
mov ecx, dword [ebx + 0x10e0]
xor dword [ebx + 0x10b0], ecx
mov ecx, dword [ebx + 0x10e4]
xor dword [ebx + 0x10b4], ecx
bswap eax
bswap edx
xor dword [ebx + 0x10bc], eax
mov dword [ebx + 0x10ec], eax
xor dword [ebx + 0x10b8], edx
mov eax, dword [esp + 0x14]
mov dword [ebx + 0x10e8], edx
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.6fa16190
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov ecx, dword [edx]
mov dword [ebp], ecx
mov ecx, dword [esp + 0x14]
mov edx, dword [eax + 4]
mov dword [ebp + 4], edx
mov edx, dword [esp + 0x14]
mov eax, dword [ecx + 8]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [edx + 0xc]
mov dword [ebp + 0xc], ecx
mov dword [esp + 4], 0x10
mov dword [esp], eax
call fcn.6fa1cfe0
mov edx, dword [ebp]
mov dword [ebx + 0x10d0], edx
mov ecx, dword [ebp + 4]
mov edx, dword [esp + 0x18]
mov dword [ebx + 0x10d4], ecx
mov eax, dword [ebp + 8]
mov dword [ebx + 0x10d8], eax
mov ebp, dword [ebp + 0xc]
mov dword [ebx + 0x10dc], ebp
mov dword [esp + 4], 0x10
mov dword [esp], edx
call fcn.6fa1cfe0
mov dword [ebx + 0x10fc], 0
mov dword [ebx + 0x1100], 0
mov dword [ebx + 0x1104], 0
mov dword [ebx + 0x10f8], 1
mov eax, dword [esp + 0x48]
and eax, 0xfffffff0
je 0x6fa1fbac
lea ebp, [eax - 1]
mov edx, dword [esi]
xor dword [ebx + 0x10b0], edx
mov dword [esp + 0x14], eax
mov eax, dword [esi + 4]
lea ecx, [ebx + 0x10b0]
shr ebp, 4
xor dword [ebx + 0x10b4], eax
and ebp, 3
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ebp
mov ebp, dword [esi + 8]
xor dword [ebx + 0x10b8], ebp
mov ebp, 0x10
mov edx, dword [esi + 0xc]
xor dword [ebx + 0x10bc], edx
mov dword [esp + 4], ecx
mov dword [esp], ebx
call fcn.6fa16190
add dword [ebx + 0x1100], 0x80
mov ecx, dword [esp + 0x1c]
adc dword [ebx + 0x1104], 0
cmp dword [esp + 0x14], 0x10
jbe 0x6fa1fb23
test ecx, ecx
je 0x6fa1f9f7
cmp ecx, 1
je 0x6fa1f9a2
cmp ecx, 2
je 0x6fa1f957
mov eax, dword [esi + 0x10]
xor dword [ebx + 0x10b0], eax
mov ebp, dword [esi + 0x14]
xor dword [ebx + 0x10b4], ebp
mov ebp, 0x20
mov edx, dword [esi + 0x18]
xor dword [ebx + 0x10b8], edx
mov ecx, dword [esi + 0x1c]
mov eax, dword [esp + 0x18]
xor dword [ebx + 0x10bc], ecx
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.6fa16190
add dword [ebx + 0x1100], 0x80
adc dword [ebx + 0x1104], 0
mov edx, dword [esi + ebp]
xor dword [ebx + 0x10b0], edx
mov ecx, dword [esi + ebp + 4]
xor dword [ebx + 0x10b4], ecx
mov eax, dword [esi + ebp + 8]
xor dword [ebx + 0x10b8], eax
mov edx, dword [esi + ebp + 0xc]
mov ecx, dword [esp + 0x18]
xor dword [ebx + 0x10bc], edx
mov dword [esp + 4], ecx
mov dword [esp], ebx
call fcn.6fa16190
add dword [ebx + 0x1100], 0x80
adc dword [ebx + 0x1104], 0
add ebp, 0x10
mov eax, dword [esi + ebp]
xor dword [ebx + 0x10b0], eax
mov edx, dword [esi + ebp + 4]
xor dword [ebx + 0x10b4], edx
mov ecx, dword [esi + ebp + 8]
xor dword [ebx + 0x10b8], ecx
mov eax, dword [esi + ebp + 0xc]
mov edx, dword [esp + 0x18]
xor dword [ebx + 0x10bc], eax
mov dword [esp + 4], edx
mov dword [esp], ebx
call fcn.6fa16190
add dword [ebx + 0x1100], 0x80
adc dword [ebx + 0x1104], 0
add ebp, 0x10
cmp dword [esp + 0x14], ebp
jbe 0x6fa1fb23
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x18]
mov ecx, dword [esi + ebp]
xor dword [ebx + 0x10b0], ecx
mov eax, dword [esi + ebp + 4]
xor dword [ebx + 0x10b4], eax
mov edx, dword [esi + ebp + 8]
xor dword [ebx + 0x10b8], edx
mov ecx, dword [esi + ebp + 0xc]
xor dword [ebx + 0x10bc], ecx
mov dword [esp + 4], edi
mov dword [esp], ebx
call fcn.6fa16190
add dword [ebx + 0x1100], 0x80
adc dword [ebx + 0x1104], 0
mov eax, dword [esi + ebp + 0x10]
xor dword [ebx + 0x10b0], eax
mov edx, dword [esi + ebp + 0x14]
xor dword [ebx + 0x10b4], edx
mov ecx, dword [esi + ebp + 0x18]
xor dword [ebx + 0x10b8], ecx
mov eax, dword [esi + ebp + 0x1c]
xor dword [ebx + 0x10bc], eax
mov dword [esp + 4], edi
mov dword [esp], ebx
call fcn.6fa16190
add dword [ebx + 0x1100], 0x80
adc dword [ebx + 0x1104], 0
mov edx, dword [esi + ebp + 0x20]
xor dword [ebx + 0x10b0], edx
mov ecx, dword [esi + ebp + 0x24]
xor dword [ebx + 0x10b4], ecx
mov eax, dword [esi + ebp + 0x28]
xor dword [ebx + 0x10b8], eax
mov edx, dword [esi + ebp + 0x2c]
xor dword [ebx + 0x10bc], edx
mov dword [esp + 4], edi
mov dword [esp], ebx
call fcn.6fa16190
add dword [ebx + 0x1100], 0x80
adc dword [ebx + 0x1104], 0
mov ecx, dword [esi + ebp + 0x30]
xor dword [ebx + 0x10b0], ecx
mov eax, dword [esi + ebp + 0x34]
xor dword [ebx + 0x10b4], eax
mov edx, dword [esi + ebp + 0x38]
xor dword [ebx + 0x10b8], edx
mov ecx, dword [esi + ebp + 0x3c]
xor dword [ebx + 0x10bc], ecx
mov dword [esp + 4], edi
mov dword [esp], ebx
call fcn.6fa16190
add dword [ebx + 0x1100], 0x80
adc dword [ebx + 0x1104], 0
add ebp, 0x40
cmp dword [esp + 0x14], ebp
ja 0x6fa1f9ff
mov edi, dword [esp + 0x1c]
add esi, ebp
jmp 0x6fa1fb60
mov edi, 1
jmp 0x6fa1f645
mov ecx, dword [ebx + 0x10fc]
cmp ecx, 0xf
jg 0x6fa1f640
xor ebp, ebp
test ecx, ecx
je 0x6fa1f87b
lea esi, [esi]
cmp dword [esp + 0x48], ebp
jbe 0x6fa1f645
mov eax, dword [esp + 0x48]
lea ecx, [ebx + 0x10b0]
mov edx, dword [ebx + 0x10fc]
mov dword [esp + 0x14], ecx
sub eax, ebp
mov ebp, eax
add ebp, esi
add esi, 1
lea eax, [edx + 1]
movzx ecx, byte [esi - 1]
mov dword [ebx + 0x10fc], eax
xor byte [ebx + edx + 0x10b0], cl
cmp eax, 0x10
je 0x6fa1fbd0
cmp ebp, esi
je 0x6fa1f645
mov edx, eax
jmp 0x6fa1fb84
xor ebp, ebp
jmp 0x6fa1fb60
mov dword [esp + 8], 0x24
mov dword [esp + 4], str.src_encauth_gcm_gcm_add_aad.c
mov dword [esp], str.adata___NULL
call fcn.6fa1c540
lea esi, [esi]
mov edx, dword [esp + 0x14]
mov dword [esp], ebx
mov dword [esp + 4], edx
call fcn.6fa16190
add dword [ebx + 0x1100], 0x80
mov dword [ebx + 0x10fc], 0
adc dword [ebx + 0x1104], 0
cmp ebp, esi
je 0x6fa1f645
xor eax, eax
mov edx, eax
jmp 0x6fa1fb84
mov dword [esp + 0x14], 0
jmp 0x6fa1f703
mov dword [esp + 8], 0x22
mov dword [esp + 4], str.src_encauth_gcm_gcm_add_aad.c
mov dword [esp], str.gcm___NULL
call fcn.6fa1c540
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop