Function at 0x55b1d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x74c0d8
mov eax, dword fs:[0]
push eax
sub esp, 0x44
push ebx
push esi
push edi
mov eax, dword [0x899944]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x20], ecx
mov edi, dword [ebp + 0x24]
movzx eax, byte [edi + 0xae]
push eax
push str.gcm_process
push edi
lea ecx, [ebp - 0x50]
call fcn.00474f30
cmp dword [ebp + 0x1c], 0
mov dword [ebp - 4], 0
je 0x55b25a
cmp dword [ebp + 0x18], 0
jne 0x55b25a
mov edx, dword [edi]
push str.NULL_input.
mov eax, dword [edx + 0x14]
mov ecx, edi
call eax
lea ecx, [ebp - 0x50]
mov dword [ebp - 4], 0xffffffff
call fcn.00474f80
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov esi, dword [ebp + 0x20]
mov ecx, esi
call fcn.004033b0
mov ecx, dword [ebp + 0x1c]
mov ebx, eax
lea eax, [ebx + ecx]
mov dword [ebp - 0x34], eax
add eax, 0x20
push eax
mov ecx, esi
call fcn.00413a50
test al, al
jne 0x55b287
mov edx, dword [edi]
push str.Unable_to_allocate_GCM_output_buffer.
jmp 0x55b22e
cmp byte [ebp + 8], 0
push ebx
je 0x55b2a2
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x10], ecx
mov ecx, esi
call fcn.0040fc00
mov ebx, eax
mov dword [ebp + 0x24], eax
jmp 0x55b2b2
mov ecx, esi
call fcn.0040fc00
mov ebx, dword [ebp + 0x18]
mov dword [ebp - 0x10], eax
mov dword [ebp + 0x24], ebx
mov esi, dword [ebp + 0x10]
mov eax, dword [esi + 0x528]
mov cl, byte [0x8a0274]
mov byte [ebp + 0x1b], cl
cmp eax, 0x10
jg 0x55b235
xor edi, edi
cmp eax, edi
jl 0x55b235
cmp dword [esi + 0x524], 1
jne 0x55b34d
cmp eax, edi
je 0x55b308
cdq
shld edx, eax, 3
add eax, eax
add eax, eax
add eax, eax
add dword [esi + 0x530], eax
lea ecx, [esi + 0x4e0]
mov eax, esi
adc dword [esi + 0x534], edx
call fcn.00558fc0
mov ecx, 0xfffffb10
lea eax, [esi + 0x4ff]
sub ecx, esi
inc byte [eax]
jne 0x55b322
dec eax
lea edx, [ecx + eax]
cmp edx, 0xc
jge 0x55b315
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
lea edx, [esi + 0x510]
push edx
lea edx, [esi + 0x4f0]
push edx
call eax
mov cl, byte [ebp + 0x1b]
mov dword [esi + 0x528], edi
mov dword [esi + 0x524], 2
cmp dword [esi + 0x524], 2
jne 0x55b235
cmp dword [esi + 0x528], edi
jne 0x55bacb
mov eax, dword [ebp + 0x1c]
xor edi, edi
cmp byte [ebp + 8], 0
je 0x55b71f
test cl, cl
je 0x55b65f
and eax, 0xfffffff0
mov dword [ebp + 0x18], edi
mov dword [ebp - 0x1c], eax
jbe 0x55bacb
mov eax, ebx
sub eax, dword [ebp - 0x10]
mov dword [ebp - 0x2c], eax
mov eax, 0xfffffb10
sub eax, esi
mov dword [ebp - 0x18], eax
mov edi, edi
mov edx, dword [ebp - 0x10]
lea ecx, [ebx + edi + 5]
mov dword [ebp - 0x14], ecx
lea ecx, [esi + 0x516]
lea esi, [edx + edi + 6]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x28], 2
movzx eax, byte [esi + 1]
cdq
shld edx, eax, 8
shl eax, 8
mov edi, eax
movzx eax, byte [esi]
mov ebx, edx
cdq
or edi, eax
or ebx, edx
shld ebx, edi, 8
movzx eax, byte [esi - 1]
shl edi, 8
cdq
or edi, eax
or ebx, edx
shld ebx, edi, 8
movzx eax, byte [esi - 2]
shl edi, 8
cdq
or edi, eax
movzx eax, byte [esi - 3]
or ebx, edx
shld ebx, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [esi - 4]
or ebx, edx
shld ebx, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [esi - 5]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [esi - 6]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx + 1]
or ebx, edx
cdq
shld edx, eax, 8
mov dword [ebp - 0x3c], edi
shl eax, 8
mov edi, eax
movzx eax, byte [ecx]
mov dword [ebp - 0x38], ebx
mov ebx, edx
cdq
or edi, eax
movzx eax, byte [ecx - 1]
or ebx, edx
shld ebx, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx - 2]
or ebx, edx
shld ebx, edi, 8
shl edi, 8
cdq
or edi, eax
movzx eax, byte [ecx - 3]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 4]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 5]
or ebx, edx
cdq
shld ebx, edi, 8
or ebx, edx
shl edi, 8
or eax, edi
mov edi, ebx
shld edi, eax, 8
shl eax, 8
mov ebx, eax
movzx eax, byte [ecx - 6]
cdq
or ebx, eax
xor ebx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x14]
or edi, edx
xor edi, dword [ebp - 0x38]
mov dword [ebp - 0x44], ebx
mov edx, edi
shr edx, 0x18
mov byte [eax + 2], dl
mov eax, dword [ebp - 0x2c]
mov edx, edi
shr edx, 0x10
mov byte [eax + esi], dl
mov esi, dword [ebp - 0x14]
mov edx, edi
shr edx, 8
mov byte [esi], dl
mov edx, ebx
mov eax, edi
mov byte [esi - 1], al
shrd edx, eax, 0x18
mov byte [esi - 2], dl
shr eax, 0x18
mov edx, ebx
mov byte [esi - 5], bl
mov eax, edi
shrd edx, eax, 0x10
mov byte [esi - 3], dl
shr eax, 0x10
mov edx, ebx
mov eax, edi
shrd edx, eax, 8
mov byte [esi - 4], dl
shr eax, 8
movzx eax, byte [ecx - 0x2f]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx - 0x30]
mov ebx, edx
cdq
or esi, eax
movzx eax, byte [ecx - 0x31]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx - 0x32]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx - 0x33]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx - 0x34]
or ebx, edx
shld ebx, esi, 8
cdq
shl esi, 8
or esi, eax
or ebx, edx
movzx eax, byte [ecx - 0x35]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx - 0x36]
mov edx, esi
mov esi, ebx
shld esi, edx, 8
shl edx, 8
mov ebx, edx
cdq
or esi, edx
or ebx, eax
xor ebx, dword [ebp - 0x44]
xor esi, edi
mov eax, esi
shr eax, 0x18
mov byte [ecx - 0x2f], al
mov edx, esi
shr edx, 0x10
mov byte [ecx - 0x30], dl
mov eax, esi
shr eax, 8
add dword [ebp - 0x14], 8
mov byte [ecx - 0x31], al
mov edx, esi
mov byte [ecx - 0x32], dl
mov eax, ebx
shrd eax, edx, 0x18
mov byte [ecx - 0x33], al
shr edx, 0x18
mov edx, esi
mov eax, ebx
shrd eax, edx, 0x10
mov byte [ecx - 0x34], al
mov eax, ebx
shrd eax, esi, 8
shr esi, 8
mov esi, dword [ebp - 0x24]
mov byte [ecx - 0x35], al
mov byte [ecx - 0x36], bl
add esi, 8
shr edx, 0x10
add ecx, 8
dec dword [ebp - 0x28]
mov dword [ebp - 0x24], esi
jne 0x55b3be
mov esi, dword [ebp + 0x10]
add dword [esi + 0x538], 0x80
lea ecx, [esi + 0x4e0]
mov eax, esi
adc dword [esi + 0x53c], 0
call fcn.00558fc0
mov ecx, dword [ebp - 0x18]
lea eax, [esi + 0x4ff]
mov edi, edi
inc byte [eax]
jne 0x55b62d
dec eax
lea edx, [eax + ecx]
cmp edx, 0xc
jge 0x55b620
mov ecx, dword [ebp - 0x20]
mov edx, dword [ecx]
lea eax, [esi + 0x510]
push eax
lea eax, [esi + 0x4f0]
push eax
mov eax, dword [edx + 0x10]
call eax
mov edi, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x24]
add edi, 0x10
mov dword [ebp + 0x18], edi
cmp edi, dword [ebp - 0x1c]
jb 0x55b3a0
jmp 0x55bacb
and eax, 0xfffffff0
mov dword [ebp - 0x1c], eax
jbe 0x55bacb
mov edx, dword [ebp - 0x10]
sub edx, ebx
mov eax, 0xfffffb10
sub eax, esi
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x18], eax
jmp 0x55b683
mov edx, dword [ebp - 0x14]
lea ecx, [esi + 0x4e0]
lea eax, [edi + ebx]
mov dword [ebp + 0x18], 2
jmp 0x55b698
mov edx, dword [ebp - 0x14]
mov ebx, dword [edx + eax]
mov edx, dword [edx + eax + 4]
xor edx, dword [ecx + 0x34]
xor ebx, dword [ecx + 0x30]
mov dword [eax + 4], edx
mov dword [eax], ebx
mov edx, ebx
xor dword [ecx], edx
mov edx, dword [eax + 4]
xor dword [ecx + 4], edx
add eax, 8
add ecx, 8
dec dword [ebp + 0x18]
jne 0x55b695
add dword [esi + 0x538], 0x80
lea ecx, [esi + 0x4e0]
mov eax, esi
adc dword [esi + 0x53c], 0
call fcn.00558fc0
mov ecx, dword [ebp - 0x18]
lea eax, [esi + 0x4ff]
inc byte [eax]
jne 0x55b6f3
dec eax
lea edx, [eax + ecx]
cmp edx, 0xc
jge 0x55b6e6
mov ecx, dword [ebp - 0x20]
mov edx, dword [ecx]
lea eax, [esi + 0x510]
push eax
lea eax, [esi + 0x4f0]
push eax
mov eax, dword [edx + 0x10]
call eax
mov ebx, dword [ebp + 0x24]
add edi, 0x10
cmp edi, dword [ebp - 0x1c]
jb 0x55b680
jmp 0x55bacb
mov dword [ebp + 0x18], edi
test cl, cl
je 0x55ba0f
and eax, 0xfffffff0
mov dword [ebp - 0x1c], eax
jbe 0x55bacb
mov eax, dword [ebp - 0x10]
sub eax, ebx
mov dword [ebp - 0x14], eax
mov eax, 0xfffffb10
sub eax, esi
mov dword [ebp - 0x18], eax
jmp 0x55b750
mov ecx, dword [ebp - 0x10]
lea edx, [ecx + edi + 5]
mov dword [ebp - 0x28], edx
lea ecx, [esi + 0x4e6]
lea edi, [ebx + edi + 6]
mov dword [ebp - 0x24], 2
jmp 0x55b770
movzx eax, byte [edi + 1]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [edi]
mov ebx, edx
cdq
or esi, eax
or ebx, edx
shld ebx, esi, 8
movzx eax, byte [edi - 1]
shl esi, 8
cdq
or esi, eax
or ebx, edx
shld ebx, esi, 8
movzx eax, byte [edi - 2]
shl esi, 8
cdq
or esi, eax
movzx eax, byte [edi - 3]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [edi - 4]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [edi - 5]
or ebx, edx
shld ebx, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [edi - 6]
or ebx, edx
shld ebx, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 1]
or ebx, edx
cdq
shld edx, eax, 8
mov dword [ebp - 0x30], esi
shl eax, 8
mov esi, eax
movzx eax, byte [ecx]
mov dword [ebp - 0x2c], ebx
mov ebx, edx
cdq
or esi, eax
movzx eax, byte [ecx - 1]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx - 2]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx - 3]
or ebx, edx
shld ebx, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx - 4]
or ebx, edx
shld ebx, esi, 8
cdq
shl esi, 8
or esi, eax
or ebx, edx
movzx eax, byte [ecx - 5]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or eax, esi
mov esi, ebx
shld esi, eax, 8
shl eax, 8
mov ebx, eax
movzx eax, byte [ecx - 6]
cdq
or esi, edx
xor esi, dword [ebp - 0x2c]
or ebx, eax
xor ebx, dword [ebp - 0x30]
mov edx, esi
shr edx, 0x18
mov eax, esi
shr eax, 0x10
mov byte [ecx], al
mov byte [ecx + 1], dl
mov edx, esi
mov eax, esi
mov byte [ecx - 2], al
shr edx, 8
mov byte [ecx - 1], dl
mov edx, ebx
shrd edx, eax, 0x18
shr eax, 0x18
mov eax, esi
mov byte [ecx - 3], dl
mov edx, ebx
shrd edx, eax, 0x10
shr eax, 0x10
movzx eax, byte [ecx + 0x31]
mov byte [ecx - 4], dl
mov edx, ebx
shrd edx, esi, 8
mov byte [ecx - 5], dl
cdq
shld edx, eax, 8
shr esi, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x30]
mov byte [ecx - 6], bl
mov ebx, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x2f]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x2e]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x2d]
or ebx, edx
shld ebx, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 0x2c]
or ebx, edx
shld ebx, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x2b]
or ebx, edx
shld ebx, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x2a]
or ebx, edx
shld ebx, esi, 8
cdq
or ebx, edx
mov edx, dword [ebp - 0x30]
shl esi, 8
or esi, eax
mov eax, dword [ebp - 0x2c]
xor edx, esi
mov esi, dword [ebp - 0x28]
xor eax, ebx
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x3c], edx
mov edx, eax
shr edx, 0x18
mov byte [esi + 2], dl
mov edx, eax
shr edx, 0x10
mov byte [edi + ebx], dl
mov edx, eax
shr edx, 8
mov byte [esi], dl
mov edx, eax
mov byte [esi - 1], dl
mov edx, dword [ebp - 0x3c]
mov ebx, eax
shrd edx, ebx, 0x18
shr ebx, 0x18
mov byte [esi - 2], dl
mov edx, dword [ebp - 0x3c]
mov ebx, eax
shrd edx, ebx, 0x10
mov byte [esi - 3], dl
mov edx, dword [ebp - 0x3c]
shr ebx, 0x10
mov ebx, edx
shrd ebx, eax, 8
mov byte [esi - 4], bl
mov byte [esi - 5], dl
add esi, 8
shr eax, 8
add edi, 8
add ecx, 8
dec dword [ebp - 0x24]
mov dword [ebp - 0x28], esi
jne 0x55b770
mov esi, dword [ebp + 0x10]
add dword [esi + 0x538], 0x80
lea ecx, [esi + 0x4e0]
mov eax, esi
adc dword [esi + 0x53c], 0
call fcn.00558fc0
mov ecx, dword [ebp - 0x18]
lea eax, [esi + 0x4ff]
lea esp, [esp]
inc byte [eax]
jne 0x55b9dd
dec eax
lea edx, [eax + ecx]
cmp edx, 0xc
jge 0x55b9d0
mov ecx, dword [ebp - 0x20]
mov edx, dword [ecx]
lea eax, [esi + 0x510]
push eax
lea eax, [esi + 0x4f0]
push eax
mov eax, dword [edx + 0x10]
call eax
mov edi, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x24]
add edi, 0x10
mov dword [ebp + 0x18], edi
cmp edi, dword [ebp - 0x1c]
jb 0x55b750
jmp 0x55bacb
and eax, 0xfffffff0
mov dword [ebp - 0x1c], eax
jbe 0x55bacb
mov edx, dword [ebp - 0x10]
sub edx, ebx
mov eax, 0xfffffb10
sub eax, esi
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x18], eax
jmp 0x55ba33
mov edx, dword [ebp - 0x14]
lea ecx, [edi + ebx]
lea eax, [esi + 0x4e0]
mov dword [ebp + 0x10], 2
mov edi, dword [ecx]
xor dword [eax], edi
mov edi, dword [ecx + 4]
xor dword [eax + 4], edi
mov edi, dword [eax + 0x30]
mov ebx, dword [eax + 0x34]
xor edi, dword [ecx]
xor ebx, dword [ecx + 4]
mov dword [ecx + edx], edi
mov dword [ecx + edx + 4], ebx
add eax, 8
add ecx, 8
dec dword [ebp + 0x10]
jne 0x55ba43
add dword [esi + 0x538], 0x80
lea ecx, [esi + 0x4e0]
mov eax, esi
adc dword [esi + 0x53c], 0
call fcn.00558fc0
mov ecx, dword [ebp - 0x18]
lea eax, [esi + 0x4ff]
inc byte [eax]
jne 0x55ba9e
dec eax
lea edx, [eax + ecx]
cmp edx, 0xc
jge 0x55ba91
mov ecx, dword [ebp - 0x20]
mov edx, dword [ecx]
lea eax, [esi + 0x510]
push eax
lea eax, [esi + 0x4f0]
push eax
mov eax, dword [edx + 0x10]
call eax
mov edi, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x24]
add edi, 0x10
mov dword [ebp + 0x18], edi
cmp edi, dword [ebp - 0x1c]
jb 0x55ba30
mov ecx, dword [ebp + 0x1c]
cmp edi, ecx
jae 0x55bbb4
mov edx, dword [ebp - 0x10]
sub edx, ebx
lea eax, [edi + ebx]
sub ecx, edi
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x14], edx
mov dword [ebp + 0x18], ecx
cmp dword [esi + 0x528], 0x10
jne 0x55bb55
add dword [esi + 0x538], 0x80
lea ecx, [esi + 0x4e0]
mov eax, esi
adc dword [esi + 0x53c], 0
call fcn.00558fc0
mov ecx, 0xfffffb10
lea eax, [esi + 0x4ff]
sub ecx, esi
lea ecx, [ecx]
inc byte [eax]
jne 0x55bb2d
dec eax
lea edx, [ecx + eax]
cmp edx, 0xc
jge 0x55bb20
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
lea edx, [esi + 0x510]
push edx
lea edx, [esi + 0x4f0]
push edx
call eax
mov eax, dword [ebp + 0x1c]
mov edx, dword [ebp - 0x14]
mov dword [esi + 0x528], 0
cmp byte [ebp + 8], 0
je 0x55bb73
mov ecx, dword [esi + 0x528]
movzx ecx, byte [ecx + esi + 0x510]
movzx edi, byte [edx + eax]
xor ecx, edi
mov byte [eax], cl
jmp 0x55bb87
mov edi, dword [esi + 0x528]
mov cl, byte [eax]
mov bl, byte [edi + esi + 0x510]
xor bl, cl
mov byte [edx + eax], bl
mov edi, dword [esi + 0x528]
xor byte [edi + esi + 0x4e0], cl
lea edi, [edi + esi + 0x4e0]
mov ecx, 1
add dword [esi + 0x528], ecx
add eax, ecx
sub dword [ebp + 0x18], ecx
mov dword [ebp + 0x1c], eax
jne 0x55bae9
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp + 0x20]
push edx
call fcn.0040fe10
lea ecx, [ebp - 0x50]
mov dword [ebp - 4], 0xffffffff
call fcn.00474f80
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20