Function at 0x42f200
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
mov ebx, 2
sub esp, 0x6c
mov eax, dword [esp + 0x84]
mov edi, dword [esp + 0x84]
mov esi, dword [eax]
cmp esi, 2
mov dword [esp + 0x48], esi
cmovae ebx, esi
xor edx, edx
xor eax, eax
lea esi, [esi]
cmp esi, eax
jbe 0x42f23a
mov ecx, dword [edi + 4]
or edx, dword [ecx + eax*4]
add eax, 1
cmp ebx, eax
jne 0x42f230
mov eax, edx
and edx, 1
shr eax, 1
or eax, edx
jne 0x42f275
mov dword [esp + 8], 0x7fc
mov dword [esp + 4], str._MoTTY_crypto_mpint.c
mov dword [esp], str._mp_eq_integer_d__0_
call fcn.00455fa0
mov eax, dword [esp + 0x84]
mov eax, dword [eax]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x42fb21
mov eax, dword [esp + 0x84]
xor esi, esi
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x34], 0
mov eax, dword [eax + 4]
mov dword [esp + 0x40], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], esi
mov dword [esp + 0x4c], eax
lea esi, [esi]
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x40]
mov ecx, dword [eax + esi*4]
mov eax, ecx
mov edx, ecx
and edx, 1
shr eax, 1
or eax, edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x30], ebx
neg eax
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x2c], ecx
shr eax, 0x1f
mov ecx, eax
mov edi, ebx
mov dword [esp + 0x40], ebx
xor ebx, ebx
neg ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x18]
adc ebx, 0
neg ebx
neg eax
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x1c]
xor edi, ecx
mov ebp, edi
mov edi, dword [esp + 0x2c]
and ebp, dword [esp + 0x20]
xor edi, ebx
and edi, dword [esp + 0x24]
xor ebp, ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x18], ebp
xor edi, ebx
mov ebx, dword [esp + 0x30]
xor ebx, dword [esp + 0x14]
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x10]
xor edx, edi
mov edi, ebx
mov ebx, dword [esp + 0x24]
and edx, ecx
mov ecx, dword [esp + 0x10]
and edi, ebx
mov ebx, dword [esp + 0x14]
xor edx, ecx
mov dword [esp + 0x10], edx
xor edi, ebx
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x34]
mov edx, edi
xor edx, esi
add esi, 1
and eax, edx
xor edi, eax
cmp esi, dword [esp + 0x48]
mov dword [esp + 0x34], edi
jne 0x42f2d0
mov eax, edi
mov edi, 0xffffff41
mov dword [esp + 0x48], esi
add eax, 0x7fffffd
shl eax, 5
sub edi, eax
mov dword [esp + 0x4c], edi
mov dword [esp + 0x2c], 4
mov dword [esp + 0x30], 0
movzx ecx, byte [esp + 0x2c]
mov edi, 1
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
mov ebp, 0x40
xor eax, eax
shl edi, cl
sub ebp, edi
mov dword [esp + 0x34], edi
mov ecx, ebp
shrd ebx, esi, cl
shr esi, cl
test cl, 0x20
cmovne ebx, esi
cmovne esi, eax
mov ecx, ebx
mov edx, esi
mov eax, ecx
and ecx, 1
shr edx, 1
shrd eax, esi, 1
mov dword [esp + 0x3c], edx
mov ebx, dword [esp + 0x3c]
or ecx, eax
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x38]
neg ecx
adc ebx, 0
neg ebx
mov eax, ebx
xor ebx, ebx
shr eax, 0x1f
xor eax, 1
mov ecx, eax
neg ecx
adc ebx, 0
mov dword [esp + 0x20], ecx
mov ecx, edi
neg ebx
xor edi, edi
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x18]
shld esi, ebx, cl
shl ebx, cl
test cl, 0x20
mov ecx, ebp
cmovne esi, ebx
cmovne ebx, edi
xor ebp, ebp
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], esi
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x44]
shrd ebx, esi, cl
shr esi, cl
test cl, 0x20
cmovne ebx, esi
cmovne esi, ebp
mov ebp, edi
mov ecx, ebx
mov ebx, esi
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x1c]
or ebp, ebx
mov ebx, dword [esp + 0x20]
mov edx, esi
mov esi, dword [esp + 0x18]
or edx, ecx
xor ebp, edi
mov ecx, dword [esp + 0x20]
and ebp, dword [esp + 0x24]
xor edx, esi
and edx, ecx
movzx ecx, byte [esp + 0x34]
xor edx, esi
mov esi, dword [esp + 0x10]
xor ebp, edi
mov edi, dword [esp + 0x14]
mov dword [esp + 0x18], edx
xor edx, edx
mov dword [esp + 0x1c], ebp
shld edi, esi, cl
shl esi, cl
test cl, 0x20
cmovne edi, esi
cmovne esi, edx
neg eax
mov ecx, esi
mov esi, dword [esp + 0x10]
mov edx, esi
mov esi, dword [esp + 0x24]
xor edx, ecx
mov ecx, dword [esp + 0x14]
and edx, ebx
xor ecx, edi
and ecx, esi
mov esi, dword [esp + 0x10]
sub dword [esp + 0x2c], 1
mov edi, dword [esp + 0x14]
xor edx, esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x10], edx
xor ecx, edi
mov edx, dword [esp + 0x34]
mov dword [esp + 0x14], ecx
add edx, esi
xor edx, esi
and eax, edx
xor esi, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x30], esi
cmp eax, 0xffffffff
jne 0x42f3b2
mov ecx, 0x92db03d6
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov eax, ecx
mul ebp
mov eax, edx
xor edx, edx
shr eax, 2
mov ebx, edx
xor edx, edx
mov ecx, eax
mov eax, 0xf63e71ea
sub eax, ecx
sbb edx, ebx
mov ebx, edx
imul ebx, ebp
mul ebp
add edx, ebx
mov eax, edx
xor edx, edx
shr eax, 2
mov ebx, edx
xor edx, edx
mov ecx, eax
mov eax, 0xb63721e8
sub eax, ecx
sbb edx, ebx
mov ebx, edx
imul ebx, ebp
mul ebp
add edx, ebx
mov eax, edx
xor edx, edx
shr eax, 1
mov ebx, edx
xor edx, edx
mov ecx, eax
mov eax, 0x9c2da00e
sub eax, ecx
sbb edx, ebx
mov ebx, edx
imul ebx, ebp
mul ebp
add edx, ebx
mov eax, edx
xor edx, edx
mov ecx, eax
mov eax, 0xaada0bb8
mov ebx, edx
xor edx, edx
sub eax, ecx
sbb edx, ebx
mov ebx, edx
imul ebx, ebp
mul ebp
add edx, ebx
shrd eax, edx, 0x1f
shr edx, 0x1f
mov ecx, eax
mov eax, 0xf75cd403
mov ebx, edx
xor edx, edx
sub eax, ecx
sbb edx, ebx
mov ebx, edx
imul ebx, ebp
mul ebp
add edx, ebx
shrd eax, edx, 0x1f
shr edx, 0x1f
mov ecx, eax
mov eax, 0xecf97a41
mov ebx, edx
xor edx, edx
sub eax, ecx
sbb edx, ebx
mov ebx, edx
imul ebx, ebp
mul ebp
add edx, ebx
shrd eax, edx, 0x1f
shr edx, 0x1f
mov ecx, eax
mov eax, 0x90d876cd
mov ebx, edx
xor edx, edx
sub eax, ecx
sbb edx, ebx
mov ecx, edx
mul ebp
imul ecx, ebp
mov ebp, edx
add ebp, ecx
mov ecx, 0x682799a0
shrd eax, ebp, 0x1a
mov ebp, 4
sub ecx, eax
xor esi, esi
mov edi, ecx
mov eax, dword [esp + 0x30]
mov ecx, ebp
mov ebx, 1
shl ebx, cl
xor edx, edx
shr eax, cl
mov ecx, 0x40
and eax, 1
neg eax
adc edx, 0
mov dword [esp + 0x18], eax
sub ecx, ebx
neg edx
mov eax, esi
mov dword [esp + 0x1c], edx
mov edx, edi
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
je 0x42f64d
mov eax, edx
xor edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
mov ecx, ebx
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x2c], ebx
xor ebx, ebx
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
mov ecx, eax
mov eax, dword [esp + 0x20]
mov ebx, edx
mov edx, dword [esp + 0x24]
or eax, ecx
mov ecx, dword [esp + 0x10]
or edx, ebx
mov ebx, dword [esp + 0x14]
xor eax, ecx
and eax, dword [esp + 0x18]
xor edx, ebx
and edx, dword [esp + 0x1c]
xor eax, ecx
movzx ecx, byte [esp + 0x2c]
xor edx, ebx
mov dword [esp + 0x10], eax
mov eax, esi
mov dword [esp + 0x14], edx
mov edx, edi
xor ebx, ebx
shld edx, esi, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, ebx
sub ebp, 1
mov ecx, eax
mov eax, edx
xor ecx, esi
xor eax, edi
and ecx, dword [esp + 0x18]
and eax, dword [esp + 0x1c]
xor ecx, esi
xor eax, edi
cmp ebp, 0xffffffff
mov esi, ecx
mov edi, eax
jne 0x42f611
mov ebx, dword [esp + 0x80]
mov eax, dword [esp + 0x48]
mov edx, 0xbf
add eax, dword [ebx]
shl eax, 5
lea ebx, [eax + 0x22]
add eax, 3
cmp eax, 0xbf
cmova eax, edx
sub ebx, eax
and ebx, 0xffffffe0
lea eax, [ebx + 0xbf]
mov dword [esp + 0x2c], eax
lea eax, [ebx + 0xe0]
add ebx, 0xc0
shr ebx, 5
shr eax, 5
mov dword [esp], eax
mov dword [esp + 0x18], eax
call fcn.0042c780
mov ecx, dword [esp + 0x4c]
add ecx, dword [esp + 0x2c]
mov edx, eax
mov dword [esp], esi
mov dword [esp + 4], edi
mov ebp, eax
shr ecx, 5
mov dword [esp + 8], ecx
mov dword [esp + 0x20], ecx
call fcn.0042bde0
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
mov edx, ebp
mov edi, dword [esp + 0x14]
lea eax, [ecx + 2]
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov eax, ebp
call fcn.0042bde0
mov edi, dword [esp + 0x18]
mov dword [esp], edi
call fcn.0042c780
mov dword [esp + 8], ebx
mov edx, eax
mov dword [esp], 1
mov dword [esp + 4], 0
mov dword [esp + 0x18], eax
call fcn.0042bde0
mov esi, dword [esp + 0x84]
mov eax, dword [esi]
add eax, edi
mov dword [esp], eax
call fcn.0042c780
cmp dword [eax], edi
mov esi, eax
mov dword [esp + 0x10], eax
mov eax, edi
cmovae eax, dword [esi]
mov dword [esp], eax
call fcn.0042c780
add edi, dword [eax]
mov ebx, eax
mov dword [esp], edi
call fcn.0042c780
mov ecx, dword [esp + 0x84]
mov edi, eax
mov dword [esp + 0x20], eax
mov eax, dword [ebp]
mov esi, dword [esp + 0x10]
cmp dword [ecx], eax
mov edx, ecx
mov ecx, eax
cmovae ecx, dword [edx]
mov edx, ecx
mov ecx, dword [esi]
mov esi, edi
cmp edx, ecx
cmova edx, ecx
mov ecx, dword [edi]
lea edx, [edx + edx*2]
add edx, edx
cmp dword [ebx], eax
cmovae eax, dword [ebx]
cmp eax, ecx
cmova eax, ecx
lea eax, [eax + eax*2]
add eax, eax
cmp edx, eax
cmovb edx, eax
mov dword [esp], edx
call fcn.0042c780
mov edx, dword [esp + 0x2c]
mov edi, eax
mov eax, dword [esi]
mov ecx, dword [esi + 4]
shr edx, 5
mov esi, eax
cmp eax, edx
mov dword [esp + 0x30], edx
cmovbe edx, eax
sub esi, edx
lea ecx, [ecx + edx*4]
cmp esi, eax
cmovbe eax, esi
mov dword [esp + 0x54], ecx
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
shl eax, 5
add eax, 4
cmp eax, 0x14
mov dword [esp + 0x2c], eax
jbe 0x42f8fa
mov esi, 0x14
nop
lea esi, [esi]
mov eax, dword [edi]
mov edx, dword [edi + 4]
lea esi, [esi + esi - 1]
mov ecx, dword [esp + 0x84]
mov dword [esp], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 4], edx
mov edx, ebp
call fcn.0042c260
mov edx, dword [esp + 0x10]
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], 0xffffffff
mov dword [esp], edx
mov edx, dword [ebx]
call fcn.0042bd60
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov ecx, ebx
mov dword [esp], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 4], edx
mov edx, ebp
call fcn.0042c260
lea eax, [esp + 0x50]
mov dword [esp + 8], 0x1f
mov dword [esp], ebp
mov dword [esp + 4], eax
call fcn.0042dc80
cmp dword [esp + 0x2c], esi
ja 0x42f870
mov eax, dword [esp + 0x10]
mov dword [esp], eax
call fcn.0042c940
mov dword [esp], ebx
call fcn.0042c940
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.0042c940
mov dword [esp], edi
call fcn.0042c940
mov eax, dword [esp + 0x80]
mov dword [esp], ebp
mov dword [esp + 4], eax
call fcn.0042db60
mov edi, dword [esp + 0x30]
mov esi, eax
mov eax, dword [eax]
mov ecx, dword [esi + 4]
cmp edi, eax
mov edx, edi
mov edi, eax
cmova edx, eax
sub edi, edx
lea ecx, [ecx + edx*4]
cmp edi, eax
cmovbe eax, edi
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.0042c780
mov edi, eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x58]
mov dword [esp + 8], 0x1f
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.0042dc80
mov eax, dword [esp + 0x84]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.0042c780
mov ebx, eax
mov eax, dword [esp + 0x84]
mov dword [esp + 4], edi
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.0042db00
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x80]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
mov edx, dword [ebx]
call fcn.0042bd60
mov dword [esp + 0x20], 2
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x84]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.0042d720
mov ecx, eax
mov edi, eax
mov eax, dword [ebx + 4]
and ecx, 1
mov edx, ecx
mov dword [esp + 0xc], ecx
mov ecx, ebx
neg edx
mov dword [esp + 8], edx
mov dword [esp + 4], edx
mov edx, dword [esp + 0x84]
mov dword [esp], edx
mov edx, dword [ebx]
call fcn.0042bd60
add dword [esp + 0x10], edi
cmp dword [esp + 0x20], 1
mov eax, dword [esp + 0x10]
jne 0x42faf2
mov dword [esp + 8], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xc], 0
mov dword [esp + 4], eax
mov dword [esp], eax
call fcn.0042d3d0
mov eax, dword [esp + 0x84]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.0042d720
test eax, eax
jne 0x42fb00
mov edx, dword [esp + 0x88]
test edx, edx
je 0x42fa9c
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x88]
mov dword [esp], eax
call fcn.0042ca20
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x42faba
mov eax, dword [esp + 0x8c]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.0042ca20
mov dword [esp], ebp
call fcn.0042c940
mov eax, dword [esp + 0x18]
mov dword [esp], eax
call fcn.0042c940
mov dword [esp], esi
call fcn.0042c940
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call fcn.0042c940
mov dword [esp], ebx
call fcn.0042c940
add esp, 0x6c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x20], 1
jmp 0x42f9f0
mov dword [esp + 8], 0x90d
mov dword [esp + 4], str._MoTTY_crypto_mpint.c
mov dword [esp], str._mp_cmp_hs_remainder__d_
call fcn.00455fa0
jmp 0x42fa7a
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0xffffffa1
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
jmp 0x42f3a2