Function at 0x101774a0
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x101aaa46
mov eax, dword fs:[0]
push eax
sub esp, 0x174
mov eax, dword [0x1026d48c]
xor eax, esp
mov dword [esp + 0x170], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x1026d48c]
xor eax, esp
push eax
lea eax, [esp + 0x188]
mov dword fs:[0], eax
mov eax, dword [esp + 0x1a0]
mov esi, dword [esp + 0x1a4]
mov edi, dword [esp + 0x19c]
mov ebx, ecx
lea ecx, [esp + 0x40]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], esi
call fcn.1002a630
mov eax, dword [edi + 0x538]
cmp eax, 0x10
mov dword [esp + 0x190], 0
jg 0x1017782a
test eax, eax
jl 0x1017782a
cmp dword [edi + 0x534], 2
je 0x10177538
push str.invalid_GCM_mode
jmp 0x1017782f
test eax, eax
je 0x10177569
push 0
cdq
push 8
push edx
push eax
call fcn.1018fc20
add dword [edi + 0x548], eax
lea ecx, [esp + 0x40]
push ecx
adc dword [edi + 0x54c], edx
lea esi, [edi + 0x4f0]
mov eax, edi
call fcn.10173900
add esp, 4
movzx ecx, byte [edi + 0x545]
movzx edx, byte [edi + 0x547]
movzx eax, byte [edi + 0x546]
mov byte [edi + 0x522], cl
movzx ecx, byte [edi + 0x542]
mov byte [edi + 0x520], dl
movzx edx, byte [edi + 0x544]
lea ebp, [edi + 0x520]
mov byte [edi + 0x525], cl
movzx ecx, byte [edi + 0x54f]
mov byte [edi + 0x521], al
movzx eax, byte [edi + 0x543]
mov byte [edi + 0x523], dl
movzx edx, byte [edi + 0x541]
mov byte [edi + 0x528], cl
movzx ecx, byte [edi + 0x54c]
mov byte [edi + 0x524], al
movzx eax, byte [edi + 0x540]
mov byte [edi + 0x526], dl
movzx edx, byte [edi + 0x54e]
mov byte [edi + 0x52b], cl
movzx ecx, byte [edi + 0x549]
mov byte [edi + 0x527], al
movzx eax, byte [edi + 0x54d]
mov byte [edi + 0x529], dl
movzx edx, byte [edi + 0x54b]
mov byte [edi + 0x52e], cl
mov byte [edi + 0x52a], al
movzx eax, byte [edi + 0x54a]
mov byte [edi + 0x52c], dl
movzx edx, byte [edi + 0x548]
mov ecx, 0xfffffb10
sub ecx, edi
lea esi, [edi + 0x4f0]
mov byte [edi + 0x52d], al
mov dword [esp + 0x1c], ecx
mov byte [edi + 0x52f], dl
mov eax, esi
mov ecx, 4
jmp 0x10177660
movzx edx, byte [eax + 0x30]
xor byte [eax], dl
movzx edx, byte [eax + 0x31]
xor byte [eax + 1], dl
movzx edx, byte [eax + 0x32]
xor byte [eax + 2], dl
movzx edx, byte [eax + 0x33]
xor byte [eax + 3], dl
add eax, 4
sub ecx, 1
jne 0x10177660
lea eax, [esp + 0x40]
push eax
mov eax, edi
call fcn.10173900
mov edx, dword [ebx]
mov edx, dword [edx + 0x10]
add esp, 4
push ebp
lea eax, [edi + 0x510]
push eax
mov ecx, ebx
call edx
mov ecx, dword [esp + 0x14]
add ecx, 0x6c
mov dword [esp + 0x14], ecx
call fcn.100f6330
mov ebp, eax
test ebp, ebp
jne 0x101776c0
mov ebp, 0x10
jmp 0x101776d6
cmp ebp, 0x10
jbe 0x101776cc
mov ebp, 0x10
jmp 0x101776d6
cmp ebp, 0xc
jae 0x101776d6
mov ebp, 0xc
mov eax, esi
mov esi, 0xfffffb11
mov edx, 0xfffffb12
mov ebx, 0xfffffb13
sub esi, edi
sub edx, edi
sub ebx, edi
lea ecx, [esp + 0x175]
mov dword [esp + 0x20], ebx
jmp 0x10177700
mov edi, dword [esp + 0x1c]
lea ebx, [eax + edi]
cmp ebx, ebp
jae 0x10177752
mov bl, byte [eax + 0x30]
xor bl, byte [eax]
mov byte [ecx - 1], bl
lea ebx, [esi + eax]
cmp ebx, ebp
jae 0x10177752
mov bl, byte [eax + 0x31]
xor bl, byte [eax + 1]
mov byte [ecx], bl
lea ebx, [edx + eax]
cmp ebx, ebp
jae 0x10177752
mov bl, byte [eax + 0x32]
xor bl, byte [eax + 2]
mov byte [ecx + 1], bl
mov ebx, dword [esp + 0x20]
add ebx, eax
cmp ebx, ebp
jae 0x10177752
mov bl, byte [eax + 0x33]
xor bl, byte [eax + 3]
add eax, 4
mov byte [ecx + 2], bl
add edi, eax
add ecx, 4
cmp edi, 0x10
jb 0x10177700
cmp byte [esp + 0x198], 0
mov bl, 1
je 0x1017777e
mov esi, dword [esp + 0x14]
mov ecx, esi
call fcn.10017ff0
push ebp
lea eax, [esp + 0x178]
push eax
mov ecx, esi
call fcn.10019380
jmp 0x10177812
mov edi, dword [esp + 0x14]
push ebp
lea ecx, [esp + 0x178]
push ecx
mov ecx, edi
call fcn.10018c80
mov bl, al
test bl, bl
jne 0x10177812
lea ecx, [esp + 0x24]
call fcn.100182e0
push 0x10
push 0xff
lea ecx, [esp + 0x2c]
mov byte [esp + 0x198], 1
call fcn.10019090
lea edx, [esp + 0x24]
push edx
mov ecx, edi
call fcn.10018bc0
test al, al
je 0x101777cd
mov bl, 1
jmp 0x10177801
mov esi, dword [esp + 0x18]
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.GCM_decrypt_authentication_tag_not_equal_to_the_expected_value.
mov ecx, esi
call edx
push ebp
lea eax, [esp + 0x178]
push eax
push str.decryptTag
mov ecx, esi
call fcn.100606d0
push edi
push str.expectedTag
mov ecx, esi
call fcn.10061870
lea ecx, [esp + 0x24]
mov byte [esp + 0x190], 0
call fcn.10018a90
lea ecx, [esp + 0x40]
mov dword [esp + 0x190], 0xffffffff
call fcn.1002a650
mov al, bl
jmp 0x1017784e
push str.invalid_GCM_buflen
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
mov ecx, esi
call eax
lea ecx, [esp + 0x40]
mov dword [esp + 0x190], 0xffffffff
call fcn.1002a650
xor al, al
mov ecx, dword [esp + 0x188]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x170]
xor ecx, esp
call fcn.1018f87e
add esp, 0x180
ret 0x10