Function at 0x50cd10
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push edi
mov edi, dword [esp + 0x10]
mov eax, dword [edi + 0x30]
xor ebp, ebp
cmp eax, ebp
je 0x50cd27
mov eax, dword [eax + 0x40]
cmp eax, ebp
jne 0x50cd20
cmp dword [edi + 0x2c], ebp
mov ebx, dword [esp + 0x14]
je 0x50cd3a
test byte [ebx + 0xc], 1
je 0x50cd3a
xor eax, eax
jmp 0x50cd3f
mov eax, 1
mov ecx, dword [0x631438]
add eax, ecx
test eax, eax
jne 0x50cdd2
push 0x620ad0
call fcn.004e70c0
add esp, 4
push 0x4c5
push str.C:4017_buildmysql_4.0.17innobasedictdict0dict.c
call sub.KERNEL32.dll_GetCurrentThreadId
push eax
call fcn.004d1950
add esp, 4
push eax
push str.__InnoDB:_Assertion_failure_in_thread__lu_in_file__s_line__lu_n
push 0x620ad0
call fcn.00599e71
push str.InnoDB:_Failing_assertion:_UT_LIST_GET_LEN_table__indexes___0___index__type__DICT_CLUSTERED___0
push 0x620ad0
call fcn.00599e71
push str._nInnoDB:_We_intentionally_generate_a_memory_trap._n
push 0x620ad0
call fcn.00599e71
push str.InnoDB:_Send_a_detailed_bug_report_to_mysql_lists.mysql.com_n
push 0x620ad0
call fcn.00599e71
mov edx, dword [0x631440]
mov dword [0x63143c], 1
mov eax, dword [edx]
add esp, 0x2c
cmp eax, ebp
je 0x50cdda
mov dword [0x631440], ebp
jmp 0x50cdda
cmp dword [0x63143c], ebp
je 0x50ce0f
push 0x4c5
push str.C:4017_buildmysql_4.0.17innobasedictdict0dict.c
call sub.KERNEL32.dll_GetCurrentThreadId
push eax
call fcn.004d1950
add esp, 4
push eax
push str.InnoDB:_Thread__lu_stopped_in_file__s_line__lu_n
push 0x620ad0
call fcn.00599e71
push 0x3b9aca00
call fcn.004e7040
add esp, 0x18
push ebx
push edi
call fcn.0050d200
add esp, 8
test eax, eax
jne 0x50ce2c
push ebx
call fcn.00513fc0
add esp, 4
pop edi
pop ebp
xor eax, eax
pop ebx
ret
test byte [ebx + 0xc], 1
push esi
push ebx
push edi
je 0x50ce3c
call fcn.0050d460
jmp 0x50ce41
call fcn.0050d8a0
mov esi, eax
mov eax, dword [esi + 8]
add esp, 8
push eax
call fcn.0052a590
mov ecx, dword [esi + 0x30]
mov dword [esi + 0x54], eax
mov dword [esi + 0x34], ecx
mov edx, dword [edi + 0x2c]
add esp, 4
inc edx
mov dword [edi + 0x2c], edx
mov edx, dword [edi + 0x34]
mov dword [esi + 0x3c], edx
mov dword [esi + 0x40], ebp
mov eax, dword [edi + 0x34]
cmp eax, ebp
je 0x50ce75
mov dword [eax + 0x40], esi
cmp dword [edi + 0x30], ebp
mov dword [edi + 0x34], esi
jne 0x50ce80
mov dword [edi + 0x30], esi
mov dword [esi + 0x18], edi
mov eax, dword [edi + 0x10]
mov dword [esi + 0x14], eax
test byte [ebx + 0xc], 4
je 0x50ce94
mov edx, dword [esi + 0x34]
jmp 0x50ce97
mov edx, dword [esi + 0x2c]
cmp edx, ebp
jbe 0x50ceac
xor ecx, ecx
mov eax, dword [esi + 0x38]
mov eax, dword [ecx + eax]
inc dword [eax + 0xc]
add ecx, 0x10
dec edx
jne 0x50ce9d
cmp dword [edi + 8], 2
jne 0x50cf63
mov ebx, dword [edi + 0x9c]
mov cl, byte [ebx]
xor eax, eax
test cl, cl
mov edx, ebx
je 0x50ceea
movsx ecx, cl
mov edi, ecx
xor edi, eax
xor edi, 0x946a4f
shl edi, 8
add edi, eax
xor edi, 0x573ed587
add edi, ecx
mov cl, byte [edx + 1]
inc edx
test cl, cl
mov eax, edi
jne 0x50cec6
mov ecx, dword [0x6314ec]
mov ecx, dword [ecx + 0x34]
xor eax, 0x62946a4f
xor edx, edx
div dword [ecx]
mov eax, dword [ecx + 4]
mov ebp, dword [eax + edx*4]
test ebp, ebp
je 0x50cf3f
mov eax, dword [ebp + 0x10]
mov edi, ebx
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [edi]
jne 0x50cf2f
test cl, cl
je 0x50cf2b
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [edi + 1]
jne 0x50cf2f
add eax, 2
add edi, 2
test cl, cl
jne 0x50cf0b
xor eax, eax
jmp 0x50cf34
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x50cf3f
mov ebp, dword [ebp + 0x18]
test ebp, ebp
jne 0x50cf06
test ebp, ebp
mov eax, ebp
jne 0x50cf4e
push ebx
call fcn.0053f150
add esp, 4
mov eax, dword [eax + 0x30]
mov edi, dword [eax + 0x44]
mov ebx, dword [esp + 0x18]
mov dword [esi + 0x44], edi
mov ecx, dword [edi + 0x10]
mov dword [esi + 0x20], ecx
jmp 0x50cf71
push esi
call fcn.00510fc0
mov edi, eax
add esp, 4
mov dword [esi + 0x44], edi
test byte [esi + 0xc], 4
jne 0x50cfd0
mov edx, dword [esi + 0x2c]
lea ecx, [edx*8 + 8]
mov edx, dword [esi + 8]
mov eax, dword [edx + 0x18]
mov ebx, dword [eax + 0x30]
lea ebp, [ecx + 7]
and ebp, 0xfffffff8
add ebx, ebp
cmp dword [eax + 0x24], ebx
jae 0x50cfa5
push ecx
push edx
call fcn.004edaf0
add esp, 8
test eax, eax
je 0x50cfaf
mov ecx, dword [eax + 0x30]
add ebp, ecx
mov dword [eax + 0x30], ebp
add eax, ecx
mov dword [esi + 0x58], eax
xor ecx, ecx
xor eax, eax
mov edx, dword [esi + 0x58]
mov dword [edx + eax*8], 0x64
mov dword [edx + eax*8 + 4], ecx
mov edx, dword [esi + 0x2c]
inc eax
cmp eax, edx
jbe 0x50cfb6
mov ebx, dword [esp + 0x18]
mov ecx, dword [edi + 0xd4]
mov eax, dword [edi + 0xdc]
inc ecx
mov dword [edi + 0xd4], ecx
mov dword [esi + 0x48], eax
mov dword [esi + 0x4c], 0
mov eax, dword [edi + 0xdc]
test eax, eax
je 0x50cffc
mov ecx, eax
mov dword [ecx + 0x4c], esi
mov eax, dword [edi + 0xd8]
test eax, eax
mov dword [edi + 0xdc], esi
jne 0x50d012
mov dword [edi + 0xd8], esi
mov esi, dword [esi + 8]
xor ecx, ecx
test esi, esi
mov eax, esi
je 0x50d029
mov edi, dword [eax + 0x24]
mov eax, dword [eax + 0x20]
add ecx, edi
test eax, eax
jne 0x50d01d
mov eax, dword [esi + 0x38]
test eax, eax
pop esi
je 0x50d037
add ecx, 0x4000
mov eax, dword [0x6314ec]
mov edx, dword [eax + 0x50]
add edx, ecx
push ebx
mov dword [eax + 0x50], edx
call fcn.00513fc0
add esp, 4
pop edi
pop ebp
mov eax, 1
pop ebx
ret