Function at 0x49d570
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xfc
mov esi, dword [esp + 0x114]
mov ebx, dword [esp + 0x110]
mov edi, dword [esp + 0x11c]
cmp esi, 0x7ff
jbe 0x49db20
call dbg.EVP_sha256
mov dword [esp], eax
mov dword [esp + 0x34], eax
call sym.adb.exe_EVP_MD_size
mov ebp, eax
add esi, 0x3f
and esi, 0xffffffc0
mov ecx, dword [esp + 0x118]
test ecx, ecx
je 0x49d5d6
xor eax, eax
cmp edi, ebp
jb 0x49daf6
cmp ebp, edi
cmovbe edi, ebp
test edi, edi
jne 0x49db50
call sym.adb.exe_BN_CTX_new
test eax, eax
mov edi, eax
mov dword [esp + 0x48], eax
je 0x49dae0
mov dword [esp], eax
call sym.adb.exe_BN_CTX_start
mov dword [esp], edi
call sym.adb.exe_BN_CTX_get
mov dword [esp], edi
mov dword [esp + 0x30], eax
call sym.adb.exe_BN_CTX_get
mov dword [esp], edi
mov dword [esp + 0x2c], eax
call sym.adb.exe_BN_CTX_get
mov dword [esp], edi
mov dword [esp + 0x4c], eax
call sym.adb.exe_BN_CTX_get
mov dword [esp], edi
mov dword [esp + 0x24], eax
call sym.adb.exe_BN_CTX_get
mov dword [esp], edi
mov dword [esp + 0x60], eax
call sym.adb.exe_BN_CTX_get
mov dword [esp], edi
mov dword [esp + 0x6c], eax
call sym.adb.exe_BN_CTX_get
mov dword [esp], edi
mov dword [esp + 0x28], eax
call sym.adb.exe_BN_CTX_get
test eax, eax
mov edi, eax
mov dword [esp + 0x58], eax
je 0x49dae0
lea eax, [esi - 1]
mov esi, eax
mov dword [esp + 0x68], eax
call sym.adb.exe_BN_value_one
mov dword [esp + 8], esi
mov dword [esp], edi
mov dword [esp + 4], eax
call dbg.BN_lshift
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x68]
mov edx, 0xcccccccd
mov dword [esp + 0x5c], 0
lea edi, [esp + 0xb0]
lea esi, [esp + 0xd0]
mov dword [esp + 0x110], ebx
mul edx
lea eax, [ebp*8]
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], edx
shr dword [esp + 0x50], 7
mov eax, dword [esp + 0x5c]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, dword [esp + 0x128]
mov dword [esp], eax
call sym.adb.exe_BN_GENCB_call
test eax, eax
je 0x49dae0
mov edx, dword [esp + 0x118]
xor eax, eax
test edx, edx
sete al
mov dword [esp + 0x38], eax
je 0x49dbf8
mov dword [esp + 0x118], 0
lea edx, [esp + 0x70]
test ebp, ebp
mov dword [esp + 0x44], 0xffffffff
jne 0x49db83
mov eax, dword [esp + 0x34]
lea ebx, [esp + 0x90]
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 4], ebp
mov dword [esp], edx
call dbg.EVP_Digest
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x34]
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], esi
mov dword [esp + 0x10], eax
mov dword [esp + 4], ebp
mov dword [esp], edi
call dbg.EVP_Digest
test eax, eax
je 0x49dae0
xor eax, eax
test ebp, ebp
je 0x49d796
movzx edx, byte [esi + eax]
xor byte [ebx + eax], dl
add eax, 1
cmp eax, ebp
jne 0x49d788
mov eax, dword [esp + 0x44]
or byte [esp + 0x90], 0x80
or byte [esp + eax + 0x90], 1
mov eax, dword [esp + 0x24]
mov dword [esp + 4], ebp
mov dword [esp], ebx
mov dword [esp + 8], eax
call dbg.BN_bin2bn
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x128]
mov dword [esp + 4], 0x32
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call sym.adb.exe_BN_is_prime_fasttest_ex
cmp eax, 0
jg 0x49d80a
jne 0x49dae0
add dword [esp + 0x5c], 1
jmp 0x49d6bd
mov eax, dword [esp + 0x128]
mov dword [esp + 8], 0
mov dword [esp + 4], 2
mov dword [esp], eax
call sym.adb.exe_BN_GENCB_call
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x128]
mov dword [esp + 8], 0
mov dword [esp + 4], 3
mov dword [esp], eax
call sym.adb.exe_BN_GENCB_call
test eax, eax
je 0x49dae0
mov dword [esp + 0x64], 0
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call sym.adb.exe_BN_zero
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
lea esi, [esi]
mov ecx, dword [esp + 0x44]
cmp ecx, ebp
jae 0x49d8bb
movzx eax, byte [esp + ecx + 0xb0]
mov byte [esp + 0x43], al
add eax, 1
test al, al
mov byte [esp + ecx + 0xb0], al
jne 0x49d8bb
mov eax, ecx
jmp 0x49d8b4
movzx ecx, byte [edi + eax]
lea edx, [ecx + 1]
test dl, dl
mov byte [edi + eax], dl
jne 0x49d8bb
sub eax, 1
cmp eax, ebp
jb 0x49d8a6
mov eax, dword [esp + 0x34]
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 4], ebp
mov dword [esp], edi
call dbg.EVP_Digest
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x30]
mov dword [esp + 4], ebp
mov dword [esp], ebx
mov dword [esp + 8], eax
call dbg.BN_bin2bn
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x38]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov dword [esp], eax
call dbg.BN_lshift
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 4], eax
mov dword [esp], eax
call dbg.BN_add
test eax, eax
je 0x49dae0
add dword [esp + 0x3c], 1
mov eax, dword [esp + 0x54]
add dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0x50], eax
jge 0x49d880
mov eax, dword [esp + 0x68]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call dbg.BN_mask_bits
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x4c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x60]
mov dword [esp], eax
call dbg.BN_copy
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov dword [esp], eax
call dbg.BN_add
test eax, eax
je 0x49dae0
mov edx, dword [esp + 0x24]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x30]
mov dword [esp], edx
call sym.adb.exe_BN_lshift1
test eax, eax
je 0x49dae0
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x60]
mov dword [esp], 0
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
call dbg.BN_div
test eax, eax
je 0x49dae0
call sym.adb.exe_BN_value_one
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x30]
mov dword [esp + 4], ecx
mov dword [esp], edx
mov dword [esp + 8], eax
call dbg.BN_sub
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x30]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 8], edx
mov dword [esp], eax
call dbg.BN_sub
test eax, eax
je 0x49dae0
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x28]
mov dword [esp + 4], ecx
mov dword [esp], eax
call sym.adb.exe_BN_cmp
test eax, eax
js 0x49daa5
mov eax, dword [esp + 0x128]
mov dword [esp + 0xc], 1
mov dword [esp + 4], 0x32
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call sym.adb.exe_BN_is_prime_fasttest_ex
cmp eax, 0
jg 0x49dc1d
jne 0x49dae0
add dword [esp + 0x64], 1
cmp dword [esp + 0x64], 0x1000
je 0x49d800
mov eax, dword [esp + 0x64]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, dword [esp + 0x128]
mov dword [esp], eax
call sym.adb.exe_BN_GENCB_call
test eax, eax
jne 0x49d860
nop
xor esi, esi
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x49db01
xor ebx, ebx
mov dword [esp], esi
call dbg.BN_MONT_CTX_free
mov eax, ebx
add esp, 0xfc
pop ebx
pop esi
pop edi
pop ebp
ret
xor ebx, ebx
mov edi, dword [esp + 0x48]
mov dword [esp], edi
call sym.adb.exe_BN_CTX_end
mov dword [esp], edi
call dbg.BN_CTX_free
jmp 0x49daec
call sym.adb.exe_EVP_sha1
mov dword [esp], eax
mov dword [esp + 0x34], eax
call sym.adb.exe_EVP_MD_size
cmp esi, 0x1ff
mov ebp, eax
ja 0x49d5ae
mov esi, 0x200
jmp 0x49d5b4
mov dword [esp + 8], edi
mov edi, dword [esp + 0x118]
lea eax, [esp + 0x70]
mov dword [esp], eax
mov dword [esp + 4], edi
call sym._memcpy
call sym.adb.exe_BN_CTX_new
test eax, eax
mov edi, eax
mov dword [esp + 0x48], eax
jne 0x49d5e9
jmp 0x49dae0
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
mov dword [esp], edi
mov dword [esp + 0x3c], edx
call sym._memcpy
mov edx, dword [esp + 0x3c]
mov dword [esp + 8], ebp
mov dword [esp], esi
mov dword [esp + 4], edx
call sym._memcpy
lea eax, [ebp - 1]
mov edx, dword [esp + 0x3c]
cmp eax, ebp
mov ecx, eax
mov dword [esp + 0x44], eax
jae 0x49d71b
movzx eax, byte [esp + ebp + 0xaf]
mov byte [esp + 0x3c], al
add eax, 1
test al, al
mov byte [esp + ecx + 0xb0], al
jne 0x49d71b
mov eax, ecx
jmp 0x49dbec
add byte [edi + eax], 1
jne 0x49d71b
sub eax, 1
cmp eax, ebp
jb 0x49dbe2
jmp 0x49d71b
lea edx, [esp + 0x70]
mov dword [esp], edx
mov dword [esp + 4], ebp
mov dword [esp + 0x3c], edx
call sym.adb.exe_RAND_bytes
mov edx, dword [esp + 0x3c]
test eax, eax
jne 0x49d70b
jmp 0x49dae0
mov eax, dword [esp + 0x128]
mov dword [esp + 8], 1
mov ebx, dword [esp + 0x110]
mov dword [esp + 4], 2
mov dword [esp], eax
call sym.adb.exe_BN_GENCB_call
test eax, eax
je 0x49dae0
call sym.adb.exe_BN_value_one
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call dbg.BN_sub
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x48]
mov dword [esp + 4], 0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call dbg.BN_div
test eax, eax
je 0x49dae0
mov eax, dword [esp + 0x48]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call dbg.BN_MONT_CTX_new_for_modulus
test eax, eax
mov esi, eax
je 0x49dae0
mov eax, dword [esp + 0x58]
mov dword [esp + 4], 2
mov dword [esp], eax
call sym.adb.exe_BN_set_word
test eax, eax
je 0x49dae2
mov ebp, dword [esp + 0x58]
mov edi, 2
mov eax, dword [esp + 0x48]
mov dword [esp + 0x14], esi
mov dword [esp + 4], ebp
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call dbg.BN_mod_exp_mont
test eax, eax
je 0x49dae2
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call dbg.BN_is_one
test eax, eax
je 0x49dd4d
call sym.adb.exe_BN_value_one
mov dword [esp + 4], ebp
mov dword [esp], ebp
mov dword [esp + 8], eax
call dbg.BN_add
test eax, eax
je 0x49dae2
add edi, 1
jmp 0x49dce7
mov eax, dword [esp + 0x128]
mov dword [esp + 8], 1
mov dword [esp + 4], 3
mov dword [esp], eax
call sym.adb.exe_BN_GENCB_call
test eax, eax
je 0x49db01
mov eax, dword [ebx + 4]
mov dword [esp], eax
call dbg.BN_free
mov eax, dword [ebx + 8]
mov dword [esp], eax
call dbg.BN_free
mov eax, dword [ebx + 0xc]
mov dword [esp], eax
call dbg.BN_free
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call dbg.BN_dup
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call dbg.BN_dup
mov dword [ebx + 8], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call dbg.BN_dup
mov ebp, dword [ebx + 4]
test ebp, ebp
mov dword [ebx + 0xc], eax
je 0x49db01
mov ebx, dword [ebx + 8]
test ebx, ebx
mov ebx, 0
je 0x49db03
test eax, eax
je 0x49db03
mov ecx, dword [esp + 0x120]
test ecx, ecx
je 0x49ddfd
mov eax, dword [esp + 0x120]
mov edx, dword [esp + 0x64]
mov dword [eax], edx
mov edx, dword [esp + 0x124]
test edx, edx
je 0x49de1b
mov eax, dword [esp + 0x124]
mov ebx, 1
mov dword [eax], edi
jmp 0x49db03
mov ebx, 1
jmp 0x49db03