Function at 0x4d2990
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x3c
call fcn.00596bf0
push ebx
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebx + 0x24]
push esi
mov dword [ebp - 0x30], 0
test eax, eax
jne 0x4d29e8
cmp dword [ebx + 0x28], eax
jne 0x4d29e8
mov eax, dword [ebx + 0x20]
lea esi, [ebx + 0x14]
push eax
call fcn.00421920
add esp, 4
test eax, eax
jne 0x4d29ec
push 0xbd
push str.....crypto_bn_bn_ctx.c
push 0x6d
push 0x81
push 3
call fcn.0040e790
add esp, 0x14
inc dword [ebx + 0x24]
jmp 0x4d29ec
inc eax
mov dword [ebx + 0x24], eax
mov ecx, ebx
call fcn.004218c0
mov ecx, ebx
mov dword [ebp - 0xc], eax
call fcn.004218c0
mov ecx, ebx
mov dword [ebp - 0x1c], eax
call fcn.004218c0
mov esi, eax
mov ecx, ebx
mov dword [ebp - 0x10], esi
call fcn.004218c0
mov dword [ebp - 0x18], eax
test eax, eax
je 0x4d2dc9
mov ecx, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 0xc]
push ecx
call fcn.004d2280
add esp, 4
test eax, eax
je 0x4d2dc8
mov edx, esi
cmp dword [edx + 4], 0
je 0x4d2dc8
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp - 0x18]
push edi
call fcn.00412d60
add esp, 4
test eax, eax
je 0x4d2dc8
mov eax, dword [ebp - 0x10]
push eax
call fcn.004129c0
push esi
mov dword [ebp - 0x14], eax
call fcn.004129c0
mov edi, dword [edi + 4]
mov esi, dword [ebp - 0x10]
push edi
mov dword [ebp - 0x28], eax
mov dword [ebp - 4], edi
call fcn.00413780
add esp, 0xc
test eax, eax
je 0x4d2dc8
mov ecx, esi
mov eax, dword [ecx + 4]
mov edx, dword [ecx]
mov dword [ebp - 8], edx
cmp eax, edi
jge 0x4d2aa8
mov ecx, edi
lea edx, [edx + eax*4]
sub ecx, eax
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 4]
mov ecx, esi
mov esi, dword [ebp - 0xc]
push edi
mov dword [ecx + 4], edi
call fcn.00413780
add esp, 4
test eax, eax
je 0x4d2dc8
mov ebx, dword [esi]
mov edx, dword [ebp - 4]
mov dword [ebp - 0x2c], ebx
mov dword [ebx], 1
cmp edx, 1
jle 0x4d2adc
lea edi, [ebx + 4]
lea ecx, [edx - 1]
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x1c]
mov dword [ecx + 4], edx
cmp edx, dword [edi + 8]
jle 0x4d2b16
push edx
push edi
call fcn.00412c50
mov esi, eax
add esp, 8
test esi, esi
je 0x4d2dc5
cmp dword [edi], 0
je 0x4d2b0e
push 1
push edi
call fcn.00412a00
add esp, 8
mov edx, dword [ebp - 4]
mov dword [edi], esi
mov dword [edi + 8], edx
mov edx, dword [ebp - 4]
mov edi, dword [edi]
mov dword [ebp - 0x24], edi
test edx, edx
jle 0x4d2b28
mov ecx, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
mov dword [eax + 4], edx
mov edx, dword [ecx]
mov dword [ebp - 0x20], edx
cmp dword [ebp - 0x14], 0
je 0x4d2be2
mov ecx, dword [ebp - 8]
mov eax, dword [ecx]
test al, 1
jne 0x4d2be5
mov edx, dword [ebx]
mov esi, dword [ebp + 0x10]
mov esi, dword [esi]
mov esi, dword [esi]
mov edi, eax
mov eax, edx
and eax, 1
neg eax
and esi, eax
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 4]
xor edx, esi
dec eax
xor esi, esi
test eax, eax
jle 0x4d2bcd
mov eax, dword [ebp - 8]
sub eax, ebx
mov dword [ebp - 0x34], eax
mov eax, 0xfffffffc
sub eax, ebx
lea ecx, [ebx + 4]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + ecx]
mov ebx, eax
shl ebx, 0x1f
shr edi, 1
or ebx, edi
mov edi, dword [ebp - 8]
mov dword [edi + esi*4], ebx
mov edi, eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
add eax, dword [ebp - 0x38]
shr edx, 1
mov eax, dword [eax + ecx + 4]
and eax, dword [ebp - 0x3c]
inc esi
xor eax, dword [ecx]
add ecx, 4
mov ebx, eax
shl ebx, 0x1f
or ebx, edx
mov edx, eax
mov eax, dword [ebp - 4]
mov dword [ecx - 8], ebx
dec eax
cmp esi, eax
jl 0x4d2b85
mov ebx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 8]
shr edi, 1
shr edx, 1
dec dword [ebp - 0x14]
mov dword [ecx + esi*4], edi
mov dword [ebx + esi*4], edx
jne 0x4d2b40
jmp 0x4d2be5
mov ecx, dword [ebp - 8]
mov esi, dword [ebp - 0x14]
cmp esi, 0x20
jg 0x4d2c00
mov eax, dword [ecx]
test eax, eax
je 0x4d2dc5
cmp eax, 1
je 0x4d2d2f
mov edx, dword [ebp - 0x28]
cmp esi, edx
jge 0x4d2c3d
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ecx]
mov dword [ebp - 0x18], eax
mov eax, dword [eax]
mov dword [ebp - 0xc], edx
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x28], esi
mov dword [ebp - 8], edx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x2c], ebx
mov ecx, edx
cmp dword [ebp - 4], 0
jle 0x4d2c73
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x24]
sub edi, ecx
sub esi, ecx
mov edx, ebx
mov eax, ecx
sub edx, ecx
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x34], ecx
lea esp, [esp]
mov ecx, dword [edi + eax]
xor dword [eax], ecx
mov ecx, dword [esi + eax]
xor dword [edx + eax], ecx
add eax, 4
dec dword [ebp - 0x34]
jne 0x4d2c60
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x28]
jne 0x4d2b36
mov ecx, dword [ebp - 8]
dec eax
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
mov edi, dword [ecx + eax*4]
test edi, edi
jne 0x4d2ca0
test eax, eax
je 0x4d2ca0
mov edi, dword [ecx + eax*4 - 4]
dec eax
test edi, edi
je 0x4d2c93
mov esi, edi
shr esi, 0x10
mov ecx, esi
neg ecx
shr ecx, 0x1f
neg ecx
mov edx, ecx
xor ebx, ebx
test edi, edi
setne bl
and edx, 0x10
xor esi, edi
and esi, ecx
xor esi, edi
mov ecx, esi
shr ecx, 8
add ebx, edx
mov edx, ecx
neg edx
xor ecx, esi
shr edx, 0x1f
neg edx
and ecx, edx
xor esi, ecx
mov edi, edx
mov ecx, esi
shr ecx, 4
mov edx, ecx
neg edx
xor ecx, esi
shr edx, 0x1f
neg edx
and ecx, edx
xor esi, ecx
and edi, 8
add ebx, edi
mov edi, edx
mov ecx, esi
shr ecx, 2
mov edx, ecx
neg edx
xor ecx, esi
shr edx, 0x1f
neg edx
and ecx, edx
xor ecx, esi
shr ecx, 1
neg ecx
shr ecx, 0x1f
and edi, 4
add ebx, edi
and edx, 2
neg ecx
add edx, ebx
mov ebx, dword [ebp - 0x2c]
and ecx, 1
shl eax, 5
add edx, ecx
add eax, edx
mov dword [ebp - 0x14], eax
jmp 0x4d2b36
mov edx, dword [ebp - 0xc]
mov eax, dword [edx + 4]
test eax, eax
jle 0x4d2d50
mov ecx, dword [edx]
lea ecx, [ecx + eax*4]
mov edi, edi
sub ecx, 4
cmp dword [ecx], 0
jne 0x4d2d4d
dec eax
test eax, eax
jg 0x4d2d40
mov dword [edx + 4], eax
mov edi, dword [edx + 4]
test edi, edi
jne 0x4d2d5d
mov edx, dword [ebp - 0xc]
mov dword [edx + 0xc], edi
mov esi, dword [ebp + 8]
mov ebx, dword [ebp - 0xc]
cmp esi, ebx
je 0x4d2dba
cmp edi, dword [esi + 8]
jle 0x4d2d94
push edi
push esi
call fcn.00412c50
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x4d2dc5
cmp dword [esi], 0
je 0x4d2d8c
push 1
push esi
call fcn.00412a00
add esp, 8
mov dword [esi], ebx
mov ebx, dword [ebp - 0xc]
mov dword [esi + 8], edi
mov eax, dword [ebx + 4]
test eax, eax
jle 0x4d2dae
mov ecx, dword [ebx]
mov edx, dword [esi]
add eax, eax
add eax, eax
push eax
push ecx
push edx
call fcn.0057e070
add esp, 0xc
mov eax, dword [ebx + 0xc]
mov dword [esi + 0xc], eax
mov ecx, dword [ebx + 4]
mov dword [esi + 4], ecx
test esi, esi
je 0x4d2dc5
mov dword [ebp - 0x30], 1
mov ebx, dword [ebp + 0x14]
pop edi
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x4d2ddd
dec eax
mov dword [ebx + 0x24], eax
mov eax, dword [ebp - 0x30]
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
dec dword [ebx + 0x18]
mov eax, dword [ebx + 0x18]
mov edx, dword [ebx + 0x14]
mov esi, dword [edx + eax*4]
mov eax, dword [ebx + 0x20]
cmp esi, eax
jae 0x4d2e23
mov ecx, dword [ebx + 0xc]
sub eax, esi
mov edx, eax
lea eax, [ecx - 1]
sub ecx, edx
and eax, 0xf
mov dword [ebx + 0xc], ecx
test edx, edx
je 0x4d2e23
dec edx
test eax, eax
jne 0x4d2e1e
mov ecx, dword [ebx + 4]
mov ecx, dword [ecx + 0x140]
mov eax, 0xf
mov dword [ebx + 4], ecx
jmp 0x4d2e1f
dec eax
test edx, edx
jne 0x4d2e06
mov eax, dword [ebp - 0x30]
mov dword [ebx + 0x20], esi
pop esi
mov dword [ebx + 0x28], 0
pop ebx
mov esp, ebp
pop ebp
ret