Function at 0x542e30
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x582f48
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x641030]
xor eax, esp
mov dword [esp + 0x3c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x641030]
xor eax, esp
push eax
lea eax, [esp + 0x54]
mov dword fs:[0], eax
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x68]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x530]
cmp eax, 0x10
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x20], ecx
jg 0x54315c
test eax, eax
jl 0x54315c
cmp dword [esi + 0x52c], 2
je 0x542ea4
push str.invalid_GCM_mode
jmp 0x543161
test eax, eax
je 0x542ecd
push 0
cdq
push 8
push edx
push eax
call fcn.005565d0
add dword [esi + 0x540], eax
lea eax, [esi + 0x4e8]
adc dword [esi + 0x544], edx
mov edx, esi
call fcn.0053ff60
movzx ecx, byte [esi + 0x53f]
movzx eax, byte [esi + 0x53d]
movzx edx, byte [esi + 0x53e]
mov byte [esi + 0x518], cl
movzx ecx, byte [esi + 0x53c]
lea edi, [esi + 0x518]
mov byte [esi + 0x51b], cl
movzx ecx, byte [esi + 0x539]
mov byte [esi + 0x51a], al
movzx eax, byte [esi + 0x53a]
mov byte [esi + 0x51e], cl
movzx ecx, byte [esi + 0x546]
mov byte [esi + 0x519], dl
movzx edx, byte [esi + 0x53b]
mov byte [esi + 0x51d], al
movzx eax, byte [esi + 0x547]
mov byte [esi + 0x521], cl
movzx ecx, byte [esi + 0x543]
mov byte [esi + 0x51c], dl
movzx edx, byte [esi + 0x538]
mov byte [esi + 0x520], al
movzx eax, byte [esi + 0x544]
mov byte [esi + 0x524], cl
movzx ecx, byte [esi + 0x540]
mov byte [esi + 0x51f], dl
movzx edx, byte [esi + 0x545]
mov byte [esi + 0x523], al
movzx eax, byte [esi + 0x541]
mov byte [esi + 0x527], cl
mov byte [esi + 0x522], dl
movzx edx, byte [esi + 0x542]
mov ecx, 0xfffffb18
lea ebx, [esi + 0x4e8]
sub ecx, esi
mov byte [esi + 0x526], al
mov byte [esi + 0x525], dl
mov eax, ebx
mov dword [esp + 0x1c], ecx
mov ebp, 4
jmp 0x542fc0
movzx edx, byte [eax + 0x30]
movzx ecx, byte [eax + 0x31]
xor byte [eax], dl
xor byte [eax + 1], cl
movzx edx, byte [eax + 0x32]
movzx ecx, byte [eax + 0x33]
xor byte [eax + 2], dl
xor byte [eax + 3], cl
add eax, 4
sub ebp, 1
jne 0x542fc0
mov eax, ebx
mov edx, esi
call fcn.0053ff60
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
mov edx, dword [edx + 0x10]
push edi
lea eax, [esi + 0x508]
push eax
call edx
mov ecx, dword [esp + 0x18]
add ecx, 0x68
mov dword [esp + 0x14], ecx
call fcn.0051d090
mov edi, eax
test edi, edi
jne 0x54301a
lea edi, [ebp + 0x10]
jmp 0x543030
cmp edi, 0x10
jbe 0x543026
mov edi, 0x10
jmp 0x543030
cmp edi, 0xc
jae 0x543030
mov edi, 0xc
mov eax, ebx
mov ebp, 0xfffffb19
mov edx, 0xfffffb1a
mov ebx, 0xfffffb1b
sub ebp, esi
sub edx, esi
sub ebx, esi
lea ecx, [esp + 0x41]
mov dword [esp + 0x18], ebx
nop
mov esi, dword [esp + 0x1c]
lea ebx, [eax + esi]
cmp ebx, edi
jae 0x5430a2
mov bl, byte [eax + 0x30]
xor bl, byte [eax]
mov byte [ecx - 1], bl
lea ebx, [eax + ebp]
cmp ebx, edi
jae 0x5430a2
mov bl, byte [eax + 0x31]
xor bl, byte [eax + 1]
mov byte [ecx], bl
lea ebx, [edx + eax]
cmp ebx, edi
jae 0x5430a2
mov bl, byte [eax + 0x32]
xor bl, byte [eax + 2]
mov byte [ecx + 1], bl
mov ebx, dword [esp + 0x18]
add ebx, eax
cmp ebx, edi
jae 0x5430a2
mov bl, byte [eax + 0x33]
xor bl, byte [eax + 3]
add eax, 4
mov byte [ecx + 2], bl
add esi, eax
add ecx, 4
cmp esi, 0x10
jb 0x543050
cmp byte [esp + 0x64], 0
mov bl, 1
je 0x5430ca
mov esi, dword [esp + 0x14]
mov ecx, esi
call fcn.00446f40
push edi
lea eax, [esp + 0x44]
push eax
mov ecx, esi
call fcn.00448260
mov al, bl
jmp 0x54316a
mov ebp, dword [esp + 0x14]
push edi
lea ecx, [esp + 0x44]
push ecx
mov ecx, ebp
call fcn.00447b80
mov bl, al
test bl, bl
jne 0x543158
lea ecx, [esp + 0x24]
call fcn.00447240
push 0x10
push 0xff
lea ecx, [esp + 0x2c]
mov dword [esp + 0x64], 0
call fcn.00447f70
lea edx, [esp + 0x24]
push edx
mov ecx, ebp
call fcn.00447ae0
test al, al
je 0x543116
mov bl, 1
jmp 0x543147
mov esi, dword [esp + 0x20]
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 edi
lea eax, [esp + 0x44]
push eax
push str.decryptTag
mov ecx, esi
call fcn.00436910
push ebp
push str.expectedTag
mov ecx, esi
call fcn.00437980
lea ecx, [esp + 0x24]
mov dword [esp + 0x5c], 0xffffffff
call fcn.004479b0
mov al, bl
jmp 0x54316a
push str.invalid_GCM_buflen
mov edx, dword [ecx]
mov eax, dword [edx + 0x14]
call eax
xor al, al
mov ecx, dword [esp + 0x54]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.005550b0
add esp, 0x4c
ret 0x10