Function at 0x43fa70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea eax, [ebp - 0x18]
push ebx
sub esp, 0xac
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 0x6c]
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0x54], sym.___gxx_personality_sj0
mov dword [ebp - 0x50], 0x5c3e2a
mov dword [ebp - 0x48], 0x4403ac
mov dword [ebp - 0x44], esp
mov dword [esp], eax
call dbg._Unwind_SjLj_Register
mov ecx, dword [ebp - 0xa0]
mov eax, dword [ecx + 0x4c]
sub eax, dword [ecx + 0x50]
cmp eax, 0x1f
ja 0x43faec
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [ebp - 0x68], 0xffffffff
call dbg.CryptoPP::QuotientRing<CryptoPP::EuclideanDomainOf<CryptoPP::PolynomialMod2> >::MultiplicativeInverse(CryptoPP::PolynomialMod2 const&) const
mov dword [ebp - 0x70], eax
sub esp, 4
lea eax, [ebp - 0x6c]
mov dword [esp], eax
call sym.__Unwind_SjLj_Unregister
mov eax, dword [ebp - 0x70]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov eax, dword [ecx + 0x40]
mov dword [ebp - 0x7c], eax
shl eax, 2
mov dword [ebp - 0xa8], eax
cmp eax, 0x3fffffff
ja 0x44032a
mov eax, dword [ebp - 0xa8]
test eax, eax
je 0x4402e5
mov eax, dword [ebp - 0x7c]
shl eax, 4
mov dword [esp], eax
mov dword [ebp - 0x68], 0xffffffff
call dbg.CryptoPP::UnalignedAllocate(unsigned int)
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp - 0xa0]
mov eax, dword [eax + 0x40]
mov dword [ebp - 0x7c], eax
shl eax, 2
mov ebx, dword [ebp - 0x7c]
mov esi, dword [ebp - 0xa4]
add eax, esi
lea esi, [esi + ebx*8]
mov dword [ebp - 0x70], eax
lea eax, [ebx + ebx*2]
lea ebx, [esi + ebx*4]
mov dword [ebp - 0x78], esi
lea edx, [eax*4]
mov dword [ebp - 0x90], ebx
test eax, eax
je 0x43fb83
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword [ebp - 0xa4]
mov dword [esp], eax
call sym._memset
mov eax, dword [ebp - 0xa4]
mov dword [eax], 1
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
cmp dword [ebp - 0x78], eax
je 0x43fbb6
mov esi, dword [ebp + 8]
mov edx, dword [esi + 8]
mov dword [esp + 4], eax
shl edx, 2
mov dword [esp + 8], edx
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
call sym._memcpy
mov ebx, dword [ebp - 0xa0]
mov esi, dword [ebp - 0x90]
mov eax, dword [ebx + 0x44]
cmp esi, eax
je 0x43fbe3
mov ebx, dword [ebx + 0x40]
mov dword [esp + 4], eax
mov dword [esp], esi
lea edx, [ebx*4]
mov dword [esp + 8], edx
call sym._memcpy
mov eax, dword [ebp - 0xa4]
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x74], 1
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x7c]
add eax, 0x3fffffff
mov dword [ebp - 0x94], eax
nop
lea esi, [esi]
mov eax, dword [ebp - 0x78]
mov eax, dword [eax]
test eax, eax
jne 0x43fcd8
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0x7c]
lea ebx, [eax + esi*4 - 4]
add eax, 4
mov dword [ebp - 0x8c], ebx
mov ebx, dword [ebp - 0x94]
mov dword [ebp - 0x88], eax
lea esi, [ebx*4]
mov dword [ebp - 0x84], esi
lea esi, [esi]
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x43fc87
cmp eax, 1
jbe 0x43fc7b
mov eax, dword [ebp - 0x84]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x88]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
call sym._memmove
mov eax, dword [ebp - 0x8c]
mov dword [eax], 0
mov edi, dword [ebp - 0x74]
mov esi, dword [ebp - 0x70]
lea eax, [edi + 0x3fffffff]
cmp dword [esi + eax*4], 1
sbb edi, 0xffffffff
mov dword [ebp - 0x74], edi
test edi, edi
je 0x43fcc7
lea eax, [esi + edi*4 - 8]
mov ecx, esi
cmp edi, 1
jne 0x43fcb2
jmp 0x43fcbe
mov eax, edx
mov edx, dword [eax]
mov dword [eax + 4], edx
lea edx, [eax - 4]
cmp ecx, eax
jne 0x43fcb0
mov eax, dword [ebp - 0x70]
mov dword [eax], 0
mov eax, dword [ebp - 0x78]
add dword [ebp - 0x80], 0x20
mov eax, dword [eax]
test eax, eax
je 0x43fc50
mov edx, eax
and edx, 1
jne 0x440130
shr eax, 1
add edx, 1
test al, 1
je 0x43fce3
mov esi, dword [ebp - 0x94]
add dword [ebp - 0x80], edx
lea ebx, [esi*4]
mov esi, dword [ebp - 0x78]
mov dword [ebp - 0x84], ebx
add esi, ebx
mov dword [ebp - 0x8c], esi
cmp eax, 1
je 0x43fed3
cmp edx, 1
je 0x43ff30
test edx, edx
je 0x43fe13
mov esi, dword [ebp - 0x7c]
test esi, esi
je 0x43fd90
mov esi, dword [ebp - 0x84]
mov edi, 0x20
mov ebx, dword [ebp - 0x8c]
xor eax, eax
sub edi, edx
mov dword [ebp - 0x9c], esi
mov esi, dword [ebp - 0x78]
mov dword [ebp - 0x88], edi
mov dword [ebp - 0x84], esi
jmp 0x43fd62
mov ebx, ecx
mov esi, dword [ebx]
mov ecx, edx
mov edi, esi
shr edi, cl
movzx ecx, byte [ebp - 0x88]
or eax, edi
mov dword [ebx], eax
mov eax, esi
shl eax, cl
lea ecx, [ebx - 4]
cmp dword [ebp - 0x84], ebx
jne 0x43fd60
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x4401b0
mov esi, 0x20
mov eax, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x74]
mov dword [ebp - 0x88], edx
sub esi, edx
mov edx, dword [ebp - 0x84]
mov dword [ebp - 0x84], esi
mov ebx, eax
lea edi, [eax + ecx*4]
xor eax, eax
mov dword [ebp - 0x9c], edx
mov esi, esi
lea edi, [edi]
mov esi, dword [ebx]
movzx ecx, byte [ebp - 0x88]
add ebx, 4
mov edx, esi
shl edx, cl
movzx ecx, byte [ebp - 0x84]
or eax, edx
mov dword [ebx - 4], eax
mov eax, esi
shr eax, cl
cmp edi, ebx
jne 0x43fdd0
mov esi, dword [ebp - 0x9c]
mov dword [ebp - 0x84], esi
test eax, eax
je 0x43fe13
mov ebx, dword [ebp - 0x74]
mov esi, dword [ebp - 0x70]
mov dword [esi + ebx*4], eax
add ebx, 1
mov dword [ebp - 0x74], ebx
mov eax, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x90]
mov edx, dword [eax]
mov eax, dword [ebp - 0x84]
mov eax, dword [esi + eax]
mov ebx, edx
or ebx, eax
jne 0x43fe54
mov ebx, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x78]
lea eax, [ebx + 0x3ffffffe]
mov edx, dword [edx + eax*4]
mov eax, dword [esi + eax*4]
lea esi, [ebx - 1]
mov dword [ebp - 0x7c], esi
lea esi, [ebx + 0x3ffffffe]
mov dword [ebp - 0x94], esi
cmp edx, eax
jae 0x43fe7c
mov eax, dword [ebp - 0x78]
mov ebx, dword [ebp - 0x90]
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x78], ebx
mov ebx, dword [ebp - 0x70]
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x98], ebx
mov ebx, dword [ebp - 0x7c]
test ebx, ebx
je 0x43fea2
mov ebx, dword [ebp - 0x78]
mov esi, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x90]
mov eax, ebx
lea ebx, [ebx + esi*4]
mov ecx, dword [edx]
xor dword [eax], ecx
add eax, 4
add edx, 4
cmp ebx, eax
jne 0x43fe94
mov ecx, dword [ebp - 0x74]
test ecx, ecx
je 0x43fc10
mov ebx, dword [ebp - 0x98]
mov esi, dword [ebp - 0x74]
mov edx, dword [ebp - 0x70]
mov eax, ebx
lea ebx, [ebx + esi*4]
nop
mov ecx, dword [edx]
xor dword [eax], ecx
add eax, 4
add edx, 4
cmp eax, ebx
jne 0x43fec0
jmp 0x43fc10
mov edi, dword [ebp - 0x7c]
test edi, edi
je 0x4401bc
mov eax, dword [ebp - 0x8c]
mov esi, dword [eax]
mov eax, dword [ebp - 0x7c]
test esi, esi
jne 0x43ffb9
mov ebx, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x78]
mov esi, ebx
jmp 0x43ff0c
mov ebx, dword [ecx + eax*4 - 4]
test ebx, ebx
jne 0x43ffb3
sub eax, 1
jne 0x43ff00
mov dword [ebp - 0x84], esi
cmp edx, 1
je 0x43ff37
test edx, edx
jne 0x43fd2e
jmp 0x43fe13
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x43ff6e
mov ebx, dword [ebp - 0x84]
xor eax, eax
mov ecx, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x78]
mov edi, ebx
mov ebx, eax
jmp 0x43ff52
mov ecx, eax
mov edx, dword [ecx]
mov eax, edx
shr eax, 1
or eax, ebx
mov ebx, edx
mov dword [ecx], eax
shl ebx, 0x1f
lea eax, [ecx - 4]
cmp esi, ecx
jne 0x43ff50
mov dword [ebp - 0x84], edi
mov edi, dword [ebp - 0x74]
test edi, edi
je 0x4401b0
mov eax, dword [ebp - 0x70]
mov ebx, dword [ebp - 0x74]
mov esi, dword [ebp - 0x84]
mov edx, eax
lea ebx, [eax + ebx*4]
xor eax, eax
mov edi, esi
mov esi, eax
mov ecx, dword [edx]
add edx, 4
lea eax, [ecx + ecx]
or eax, esi
mov esi, ecx
mov dword [edx - 4], eax
shr esi, 0x1f
cmp ebx, edx
jne 0x43ff90
mov dword [ebp - 0x84], edi
mov eax, esi
jmp 0x43fe00
mov dword [ebp - 0x84], esi
cmp eax, 1
jne 0x43ff17
mov eax, dword [ebp - 0x80]
cmp eax, 0x1f
jbe 0x4400ae
mov ebx, eax
mov edx, dword [ebp - 0xa0]
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x74], ebx
nop
mov ebx, dword [eax]
mov dword [ebp - 0x70], ebx
mov ebx, dword [edx + 0x48]
lea ecx, [ebx + 0x1f]
shr ecx, 5
cmp ecx, 1
jbe 0x440017
mov ebx, 1
nop
lea esi, [esi]
mov ecx, dword [eax + ebx*4]
mov dword [eax + ebx*4 - 4], ecx
mov esi, dword [edx + 0x48]
add ebx, 1
lea ecx, [esi + 0x1f]
shr ecx, 5
cmp ebx, ecx
jb 0x440000
mov dword [eax + ecx*4 - 4], 0
mov ebx, dword [edx + 0x50]
cmp ebx, 0x1f
jbe 0x440165
mov esi, ebx
mov edi, dword [ebp - 0x70]
mov ecx, ebx
shr esi, 5
shl edi, cl
xor dword [eax + esi*4 - 4], edi
mov ebx, dword [edx + 0x50]
mov ecx, ebx
and ecx, 0x1f
je 0x440059
mov esi, 0x20
shr ebx, 5
sub esi, ecx
mov ecx, esi
mov esi, dword [ebp - 0x70]
shr esi, cl
xor dword [eax + ebx*4], esi
mov ecx, dword [edx + 0x4c]
mov ebx, ecx
shr ebx, 5
lea ebx, [eax + ebx*4 - 4]
mov esi, dword [ebx]
mov dword [ebp - 0x78], esi
and ecx, 0x1f
je 0x440120
mov edi, dword [ebp - 0x70]
mov esi, edi
shl esi, cl
mov ecx, dword [ebp - 0x78]
xor ecx, esi
mov esi, 0x20
mov dword [ebx], ecx
mov ecx, dword [edx + 0x4c]
mov ebx, ecx
and ecx, 0x1f
sub esi, ecx
shr ebx, 5
mov ecx, esi
shr edi, cl
xor dword [eax + ebx*4], edi
sub dword [ebp - 0x74], 0x20
mov ebx, dword [ebp - 0x74]
cmp ebx, 0x1f
ja 0x43ffe0
and dword [ebp - 0x80], 0x1f
mov edx, dword [ebp - 0x80]
test edx, edx
jne 0x4401d2
mov ebx, dword [ebp - 0xa0]
mov esi, dword [ebp - 0x98]
mov eax, dword [ebx + 0x60]
cmp eax, esi
je 0x4400e6
mov ebx, dword [ebx + 0x5c]
mov dword [esp + 4], esi
mov dword [esp], eax
lea edx, [ebx*4]
mov dword [esp + 8], edx
call sym._memcpy
mov eax, dword [ebp - 0xa0]
mov ebx, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0xa8]
add eax, 0x54
mov edi, ebx
mov dword [ebp - 0x70], eax
xor eax, eax
rep stosd dword es:[edi], eax
mov dword [esp], ebx
mov dword [ebp - 0x68], 0
call dbg.CryptoPP::UnalignedDeallocate(void*)
jmp 0x43fad4
mov ecx, dword [ebp - 0x70]
xor ecx, dword [ebp - 0x78]
mov dword [ebx], ecx
jmp 0x44009a
mov ebx, dword [ebp - 0x94]
mov esi, dword [ebp - 0x78]
shl ebx, 2
add esi, ebx
mov dword [ebp - 0x84], ebx
mov dword [ebp - 0x8c], esi
cmp eax, 1
jne 0x43fe13
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x43fe13
xor edx, edx
jmp 0x43fede
mov ecx, 0x20
mov dword [ebp - 0x7c], eax
mov edi, ebx
xor esi, esi
sub ecx, ebx
mov dword [ebp - 0x84], ebx
mov ebx, dword [ebp - 0x70]
mov dword [ebp - 0x78], ecx
nop
cmp edi, 0x1f
ja 0x440194
mov eax, ebx
mov ecx, esi
shr eax, cl
mov ecx, edi
and eax, 1
shl eax, cl
xor ebx, eax
add esi, 1
add edi, 1
cmp esi, dword [ebp - 0x78]
jne 0x440180
mov dword [ebp - 0x70], ebx
mov eax, dword [ebp - 0x7c]
mov ebx, dword [ebp - 0x84]
jmp 0x44003e
mov dword [ebp - 0x74], 0
jmp 0x43fe13
cmp edx, 1
je 0x43ff6e
test edx, edx
jne 0x43fd90
jmp 0x43fe13
mov esi, dword [ebp - 0xa0]
mov eax, dword [ebp - 0x98]
mov edi, 0x20
sub edi, dword [ebp - 0x80]
mov esi, dword [esi + 0x48]
mov eax, dword [eax]
mov ecx, edi
lea edx, [esi + 0x1f]
shl eax, cl
mov dword [ebp - 0x70], esi
shr edx, 5
je 0x440235
mov esi, dword [ebp - 0x98]
mov dword [ebp - 0x78], eax
lea ebx, [esi + edx*4 - 4]
mov dword [ebp - 0x70], esi
mov esi, dword [ebp - 0x80]
xor edx, edx
mov dword [ebp - 0x74], esi
jmp 0x440216
mov ebx, eax
mov eax, dword [ebx]
movzx ecx, byte [ebp - 0x74]
mov esi, eax
shr esi, cl
mov ecx, edi
or edx, esi
shl eax, cl
mov dword [ebx], edx
mov edx, eax
lea eax, [ebx - 4]
cmp dword [ebp - 0x70], ebx
jne 0x440214
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0xa0]
mov esi, dword [esi + 0x50]
mov ebx, esi
and ebx, 0x1f
mov dword [ebp - 0x74], ebx
cmp esi, 0x1f
ja 0x4402f6
mov ecx, 0x20
mov ebx, esi
xor edx, edx
sub ecx, esi
mov dword [ebp - 0x70], ecx
cmp ebx, 0x1f
ja 0x440271
mov edi, eax
mov ecx, edx
shr edi, cl
mov ecx, ebx
and edi, 1
shl edi, cl
xor eax, edi
add edx, 1
add ebx, 1
cmp dword [ebp - 0x70], edx
jne 0x44025d
mov ebx, dword [ebp - 0x74]
test ebx, ebx
je 0x44029a
mov ecx, 0x20
shr esi, 5
mov edx, eax
sub ecx, ebx
mov ebx, dword [ebp - 0x98]
shr edx, cl
xor dword [ebx + esi*4], edx
mov edi, dword [ebp - 0xa0]
mov esi, dword [ebp - 0x98]
mov edx, dword [edi + 0x4c]
mov ecx, edx
shr ecx, 5
and edx, 0x1f
lea ebx, [esi + ecx*4 - 4]
mov ecx, edx
mov esi, dword [ebx]
je 0x440321
mov edx, eax
shl edx, cl
mov ecx, 0x20
xor edx, esi
mov esi, dword [ebp - 0x98]
mov dword [ebx], edx
mov edx, dword [edi + 0x4c]
mov ebx, edx
and edx, 0x1f
shr ebx, 5
sub ecx, edx
shr eax, cl
xor dword [esi + ebx*4], eax
jmp 0x4400b9
mov dword [ebp - 0xa4], 0
xor eax, eax
jmp 0x43fb3e
movzx ecx, byte [ebp - 0x74]
mov ebx, dword [ebp - 0x98]
shr esi, 5
mov edx, eax
shl edx, cl
xor dword [ebx + esi*4 - 4], edx
mov esi, dword [ebp - 0xa0]
mov esi, dword [esi + 0x50]
mov ebx, esi
and ebx, 0x1f
mov dword [ebp - 0x74], ebx
jmp 0x44027c
xor eax, esi
mov dword [ebx], eax
jmp 0x4400b9
mov dword [esp], 0x20
call sym.___cxa_allocate_exception
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x70], eax
mov dword [esp], 0x5d0c84
mov dword [ebp - 0x68], 1
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_char_const__std::allocator_char__const___clone_.isra.81_
push eax
lea esi, [ebp - 0x30]
mov dword [esp + 4], esi
mov dword [esp], 1
mov ecx, dword [ebp - 0x70]
mov dword [ebp - 0x68], 2
call fcn.004cee50
push eax
lea edx, [ebp - 0x28]
push eax
mov eax, dword [ebp - 0x70]
mov dword [eax], method.CryptoPP::InvalidArgument.InvalidArgument__
mov eax, dword [ebp - 0x30]
cmp eax, edx
je 0x44038a
mov dword [esp], eax
call sym.operator_delete_void_
mov dword [esp + 8], method.CryptoPP::InvalidArgument.InvalidArgument__
mov dword [esp + 4], 0x5e0be8
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
mov dword [ebp - 0x68], 0xffffffff
call sym.___cxa_throw
add ebp, 0x18
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x68]
test eax, eax
jne 0x4403d9
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call sym.___cxa_free_exception
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
mov dword [ebp - 0x68], 0xffffffff
call dbg._Unwind_SjLj_Resume
sub eax, 1
jne 0x4403f2
mov eax, dword [ebp - 0x30]
lea edx, [ebp - 0x28]
cmp eax, edx
je 0x4403bc
mov dword [esp], eax
call sym.operator_delete_void_
jmp 0x4403bc
ud2