Function at 0x430c20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x40
mov eax, dword [esp + 0x54]
mov ebx, 0xf
test eax, eax
je 0x430d5e
cmp byte [edx], 0
je 0x430d65
lea ebx, [eax + 3]
mov ebp, ebx
and ebp, 0xfffffffc
cmp ebp, 0x7ffffffd
jae 0x430d84
mov esi, 4
test ebp, ebp
mov eax, 4
mov dword [esp + 0xc], ecx
je 0x430c7f
mov edi, edx
mov ecx, 8
mov edx, ebp
call fcn.0048bb80
test eax, eax
je 0x430d84
mov edx, edi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x54]
mov edi, ebx
mov dword [esp], ebx
xor ebx, ebx
shr edi, 2
mov ecx, eax
and ecx, 3
cmovne esi, ecx
mov ecx, eax
setne bl
mov eax, dword [esp + 0x1c]
shr ecx, 2
add ebx, ecx
mov ecx, dword [esp]
cmp ebx, edi
ja 0x430dba
cmp ecx, 4
jb 0x430cd7
push ebp
push 0
push eax
mov ebp, edi
mov dword [esp + 0x14], ebx
mov edi, edx
mov ebx, eax
call sub.VCRUNTIME140.dll_memset
mov eax, ebx
mov ebx, dword [esp + 0x14]
mov edx, edi
mov edi, ebp
add esp, 0xc
test ebx, ebx
je 0x430d6c
lea ecx, [ebx - 1]
cmp ecx, edi
jae 0x430d73
mov dword [esp + 8], ebx
mov cl, 1
xor ebp, ebp
xor ebx, ebx
mov dword [esp + 0x14], edi
mov dword [esp + 4], 0
mov edi, dword [esp + 0x54]
sub edi, ebx
cmovb edi, ebp
jbe 0x430d8b
mov byte [esp + 0x18], cl
mov ecx, dword [esp + 4]
dec esi
inc ecx
mov dword [esp + 0x10], ecx
xor ecx, ecx
nop
movzx ebp, byte [edx + ebx]
shl ecx, 8
inc ebx
or ecx, ebp
sub esi, 1
jb 0x430d34
dec edi
jne 0x430d20
jmp 0x430d86
mov edi, dword [esp + 4]
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 8]
not edi
mov dword [esp + 4], ebp
add edi, esi
cmp ebp, esi
mov esi, 4
mov ebp, 0
mov dword [eax + edi*4], ecx
setb cl
jne 0x430d00
jmp 0x430d8b
mov esi, 0x5e0836
jmp 0x430ddc
mov esi, 0x5e0845
jmp 0x430ddc
mov ecx, dword [esp]
xor ebx, ebx
jmp 0x430d97
mov ecx, eax
mov eax, dword [esp + 0x54]
dec esi
dec eax
cmp esi, eax
mov eax, ecx
mov ecx, dword [esp]
ja 0x430dba
ud2
movzx ecx, byte [esp + 0x18]
test cl, 1
mov edi, dword [esp + 0x14]
mov ecx, dword [esp]
jne 0x430dba
cmp ebx, dword [esp + 0x54]
jne 0x430dba
mov ebp, eax
cmp ecx, 0x403
jbe 0x430df7
mov ecx, dword [esp + 0xc]
mov ebx, 8
mov esi, 0x5e0864
jmp 0x430e4f
mov esi, 0x5e0836
cmp ecx, 4
jb 0x430dd3
push eax
push 0
push dword [0x623140]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, dword [esp + 0xc]
mov ebx, 0xf
mov dword [ecx + 8], esi
mov dword [ecx + 0xc], ebx
mov dword [ecx + 4], 0
mov dword [ecx], 0
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, ecx
cmp ecx, 0x10
mov ecx, dword [esp + 0xc]
jae 0x430e13
mov ebx, 0xf
mov esi, 0x5e0836
cmp eax, 4
jb 0x430ddc
jmp 0x430e4f
mov ebx, edi
mov edi, ecx
push ebx
mov esi, ebp
push ebp
call fcn.004d9bf0
add esp, 8
test eax, eax
je 0x430e33
mov ebx, 0x10
mov esi, 0x5e0854
jmp 0x430e4d
push ebx
push 3
push esi
call fcn.004d9d60
add esp, 0xc
test eax, eax
je 0x430e67
mov ebx, 0xf
mov esi, 0x5e0836
mov ecx, edi
push ebp
push 0
push dword [0x623140]
mov edi, ecx
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, edi
jmp 0x430ddc
push dword [esi + 4]
push dword [esi]
call fcn.004db0b0
add esp, 8
mov dword [esp + 8], edx
mov ecx, esi
mov edx, ebx
mov dword [esp + 4], eax
mov dword [esp + 0x14], ebx
call fcn.00431270
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 4]
mov ecx, dword [esp + 8]
mov ebx, eax
cmp edx, 0x400
mov dword [esp + 0x34], esi
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x38], ecx
jb 0x430d84
mov eax, ebx
mov ecx, ebx
mov esi, str.TooSmallPublicKeyIsMissing
shr eax, 2
shr ecx, 1
or ecx, eax
or ecx, ebx
and ecx, 1
lea eax, [ebx + ecx*8]
and eax, 0xfffffff8
cmp eax, edx
jb 0x430ed9
cmp ebx, dword [esp + 0x64]
mov esi, 0x5e0864
jbe 0x430ef4
push ebp
push 0
push dword [0x623140]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ebx, 8
mov ecx, edi
jmp 0x430ddc
mov edx, dword [esp]
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x10], ebx
and edx, 0x7fc
mov dword [esp + 0x24], edi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x30], ebx
je 0x430f39
mov ecx, 8
call fcn.0048bb80
test eax, eax
je 0x430d84
mov edx, eax
jmp 0x430f3e
mov edx, 4
xor eax, eax
cmp dword [esp], 0x20
mov ebx, ebp
jb 0x430f7c
mov eax, edi
xor ecx, ecx
pcmpeqd xmm0, xmm0
and eax, 0x1f8
movdqu xmm1, xmmword [ebx + ecx*4]
movdqu xmm2, xmmword [ebx + ecx*4 + 0x10]
pxor xmm1, xmm0
pxor xmm2, xmm0
movdqu xmmword [edx + ecx*4], xmm1
movdqu xmmword [edx + ecx*4 + 0x10], xmm2
add ecx, 8
cmp eax, ecx
jne 0x430f55
jmp 0x430f85
mov ecx, dword [ebx + eax*4]
not ecx
mov dword [edx + eax*4], ecx
inc eax
cmp edi, eax
jne 0x430f7c
mov eax, edi
or byte [edx], 1
mov dword [esp + 0x18], esi
mov dword [esp], edx
shl eax, 5
mov ecx, eax
sub ecx, dword [esp + 0x10]
je 0x430fce
mov edx, dword [esp]
mov esi, dword [esp]
mov edx, dword [edx + edi*4 - 4]
shl edx, cl
shr edx, cl
mov dword [esi + edi*4 - 4], edx
mov esi, dword [esp + 0x10]
mov edx, dword [esp]
sub esi, eax
push edi
push ebx
push edx
push edx
call fcn.004d9e80
mov edx, dword [esp + 0x10]
add esp, 0x10
inc esi
jne 0x430fbb
mov esi, edi
push edi
push ebx
push edx
push edx
call fcn.004d9e80
mov edx, dword [esp + 0x10]
add esp, 0x10
dec esi
jne 0x430fd0
push edi
lea eax, [esp + 0x2c]
push eax
push ebx
push edx
push edx
push edx
mov esi, edx
call fcn.004c99c0
add esp, 0x18
push edi
lea eax, [esp + 0x2c]
push eax
push ebx
push esi
push esi
push esi
call fcn.004c99c0
add esp, 0x18
push edi
lea eax, [esp + 0x2c]
push eax
push ebx
push esi
push esi
push esi
call fcn.004c99c0
add esp, 0x18
push edi
lea eax, [esp + 0x2c]
push eax
push ebx
push esi
push esi
push esi
call fcn.004c99c0
add esp, 0x18
push edi
lea eax, [esp + 0x2c]
push eax
push ebx
push esi
push esi
push esi
call fcn.004c99c0
add esp, 0x18
mov edi, dword [esp + 0x5c]
cmp edi, 5
jbe 0x431057
mov dword [esp + 4], 0x5e0864
mov esi, 8
jmp 0x4310d1
test edi, edi
mov dword [esp + 4], 0x5e0845
je 0x4310a0
mov ebx, dword [esp + 0x58]
mov esi, 0xf
cmp byte [ebx], 0
je 0x4310d1
xor eax, eax
xor ecx, ecx
movzx edx, byte [ebx]
shld ecx, eax, 8
shl eax, 8
inc ebx
or eax, edx
dec edi
jne 0x431075
cmp eax, dword [esp + 0x68]
mov edi, ecx
mov dword [esp + 4], str.TooSmallPublicKeyIsMissing
sbb edi, dword [esp + 0x6c]
jae 0x4310a7
mov esi, 8
jmp 0x4310d1
mov esi, 0xf
jmp 0x4310d1
test ecx, 0xfffffffe
mov esi, 8
mov dword [esp + 4], 0x5e0864
jne 0x4310d1
movzx edx, dl
test dl, 1
jne 0x43110f
mov esi, 0x10
mov dword [esp + 4], 0x5e0854
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 4]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], esi
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [eax + 4], 0
mov dword [eax], 0
push ebp
push 0
push dword [0x623140]
call esi
push dword [esp]
push 0
push dword [0x623140]
call esi
jmp 0x430def
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 8]
mov dword [edx], eax
mov eax, dword [esp + 0x14]
mov dword [edx + 4], ecx
mov dword [edx + 8], ebp
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], edi
mov dword [edx + 0x14], esi
mov edi, dword [esp + 0x10]
mov esi, dword [esp]
mov dword [edx + 0x18], edi
mov dword [edx + 0x1c], esi
mov dword [edx + 0x20], eax
jmp 0x430def