Function at 0x654320
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 0x18]
mov eax, dword [0x808040]
xor eax, ebp
test ecx, ecx
cmove ecx, dword [ebp + 0x14]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x10], eax
mov eax, dword [edi + 4]
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x6543be
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 4]
mov dword [ebp - 0x24], edx
mov edx, dword [eax]
xor esi, esi
xor ebx, ebx
or ebx, dword [edx + esi*4]
inc esi
cmp ecx, esi
jne 0x65435b
test ebx, ebx
je 0x6543be
push eax
call fcn.006475d0
add esp, 4
mov esi, eax
add esi, 7
mov edx, esi
and edx, 7
mov eax, dword [edi]
mov ecx, dword [eax + 0x14]
test ecx, ecx
je 0x6543b9
mov esi, edx
call dword [0x8010bc]
push edi
call ecx
mov edx, esi
add esp, 4
mov esi, eax
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x24]
test edx, edx
jne 0x6543a4
mov byte [ebx], 0
inc ebx
dec esi
lea eax, [ecx + 2]
cmp esi, eax
jae 0x6543f7
push 0x156
push str....._third_party_boringssl_srccrypto_fipsmodule_rsapadding.c
push 0x72
jmp 0x6543ca
shr esi, 3
jmp 0x654395
push 0x149
push str....._third_party_boringssl_srccrypto_fipsmodule_rsapadding.c
push pe_nt_image_headers32
push 0
push 4
call fcn.006baa70
add esp, 0x14
xor esi, esi
xor edi, edi
push edi
call fcn.005646a0
add esp, 4
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005c6b46
mov eax, esi
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, ecx
mov eax, dword [ebp + 0x1c]
cmp eax, 0xffffffff
je 0x65440d
cmp eax, 0xfffffffe
jne 0x654422
mov edi, esi
sub edi, ecx
add edi, 0xfffffffe
mov eax, esi
sub eax, ecx
mov dword [ebp - 0x30], eax
add eax, 0xfffffffe
cmp eax, edi
jae 0x654471
push 0x16b
jmp 0x6543b0
mov edi, eax
test eax, eax
jns 0x65440d
push 0x164
push str....._third_party_boringssl_srccrypto_fipsmodule_rsapadding.c
push 0x8a
jmp 0x6543ca
push dword [ebp - 0x1c]
call fcn.005646a0
add esp, 4
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x65445c
mov ecx, dword [eax]
mov esi, dword [ebp - 0x18]
call dword [0x8010bc]
push esi
call ecx
add esp, 4
xorps xmm0, xmm0
movups xmmword [ebp - 0x20], xmm0
xor esi, esi
jmp 0x6543da
mov dword [ebp - 0x2c], edi
xor edi, edi
jmp 0x65449f
mov dword [ebp - 0x38], edx
test edi, edi
je 0x65446a
push edi
call fcn.00564600
add esp, 4
test eax, eax
je 0x6543d6
mov ecx, edi
mov edi, eax
push 0x78d417
mov dword [ebp - 0x2c], ecx
push ecx
push eax
call fcn.0064c970
add esp, 0xc
xorps xmm0, xmm0
lea eax, [ebp - 0x20]
movups xmmword [eax], xmm0
sub esp, 4
push dword [ebp + 0x14]
push eax
call fcn.004c1530
add esp, 0xc
test eax, eax
je 0x654439
mov eax, dword [ebp - 0x30]
lea ecx, [ebx + eax]
dec ecx
mov dword [ebp - 0x34], ecx
dec eax
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x10]
call dword [0x8010bc]
push 8
push 0x78d477
lea eax, [ebp - 0x20]
push eax
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x10]
call dword [0x8010bc]
push dword [ebp - 0x24]
push dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x10]
call dword [0x8010bc]
push dword [ebp - 0x2c]
push edi
lea eax, [ebp - 0x20]
push eax
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x14]
call dword [0x8010bc]
push dword [ebp - 0x34]
lea eax, [ebp - 0x20]
push eax
call ecx
add esp, 8
mov eax, dword [ebp - 0x20]
push dword [eax + 0x1c]
push dword [ebp - 0x1c]
call fcn.005646e0
add esp, 8
push dword [ebp - 0x1c]
call fcn.005646a0
add esp, 4
mov eax, dword [ebp - 0x14]
test eax, eax
mov dword [ebp - 0x28], ebx
je 0x65456f
mov ecx, dword [eax]
mov ebx, dword [ebp - 0x18]
call dword [0x8010bc]
push ebx
mov ebx, dword [ebp - 0x28]
call ecx
add esp, 4
xorps xmm0, xmm0
movups xmmword [ebp - 0x20], xmm0
push dword [ebp - 0x3c]
push dword [ebp - 0x24]
push dword [ebp - 0x34]
push dword [ebp - 0x30]
push ebx
call fcn.004c3170
add esp, 0x14
test eax, eax
je 0x654463
mov ecx, ebx
mov ebx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x24]
add edx, ebx
mov eax, esi
sub eax, edx
xor byte [eax + ecx - 2], 1
test ebx, ebx
je 0x6545be
not edx
add edx, dword [ebp - 0x28]
add edx, esi
xor eax, eax
mov cl, byte [edi + eax]
xor byte [edx + eax], cl
inc eax
cmp ebx, eax
jne 0x6545b3
mov eax, dword [ebp - 0x38]
test eax, eax
mov edx, dword [ebp - 0x28]
je 0x6545d5
mov cl, 8
sub cl, al
mov eax, 0xff
shr eax, cl
and byte [edx], al
mov byte [esi + edx - 1], 0xbc
xor esi, esi
inc esi
jmp 0x6543da