Function at 0x588d30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push esi
mov esi, 0x631de0
mov dword [ebp - 4], esi
mov ecx, dword [ebp - 4]
mov edx, 1
xchg dword [ecx], edx
mov dword [ebp - 8], edx
mov eax, dword [ebp - 8]
test eax, eax
jne 0x588d69
mov dword [0x631df4], str.C:4017_buildmysql_4.0.17innobasecomcom0shm.c
mov dword [0x631df8], 0x251
jmp 0x588d7c
push 0x251
push str.C:4017_buildmysql_4.0.17innobasecomcom0shm.c
push esi
call fcn.0051e0f0
add esp, 0xc
mov eax, dword [0x63161c]
test eax, eax
je 0x588dad
mov dword [ebp - 8], esi
mov edx, 0
mov ecx, dword [ebp - 8]
xchg dword [ecx], edx
mov eax, dword [0x631de4]
test eax, eax
je 0x588f73
push esi
call fcn.0051e330
add esp, 4
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [0x631e10]
test eax, eax
je 0x588f54
push ebx
push edi
mov esi, dword [0x631e14]
xor ecx, ecx
cmp ecx, eax
mov eax, dword [0x631438]
sbb edx, edx
neg edx
add edx, eax
jne 0x588e5d
push 0x620ad0
call fcn.004e70c0
add esp, 4
push 0x25d
push str.C:4017_buildmysql_4.0.17innobasecomcom0shm.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:__com_shm_destination_list_.count___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 eax, dword [0x631440]
mov dword [0x63143c], 1
mov ecx, dword [eax]
add esp, 0x2c
test ecx, ecx
je 0x588e66
mov dword [0x631440], 0
jmp 0x588e66
mov eax, dword [0x63143c]
test eax, eax
je 0x588e9b
push 0x25d
push str.C:4017_buildmysql_4.0.17innobasecomcom0shm.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
dec dword [0x631e10]
mov eax, dword [esi + 0x28]
test eax, eax
je 0x588eb0
mov ecx, dword [esi + 0x24]
mov dword [eax + 0x24], ecx
jmp 0x588eb9
mov edx, dword [esi + 0x24]
mov dword [0x631e18], edx
mov eax, dword [esi + 0x24]
test eax, eax
je 0x588ec8
mov ecx, dword [esi + 0x28]
mov dword [eax + 0x28], ecx
jmp 0x588ed1
mov edx, dword [esi + 0x28]
mov dword [0x631e14], edx
mov edi, dword [esi + 8]
mov edx, dword [esi + 4]
xor eax, eax
test edi, edi
jbe 0x588efe
xor ecx, ecx
mov cl, byte [edx]
mov ebx, ecx
xor ebx, eax
xor ebx, 0x946a4f
shl ebx, 8
add ebx, eax
xor ebx, 0x573ed587
add ebx, ecx
inc edx
dec edi
mov eax, ebx
jne 0x588edd
mov ecx, dword [0x631e1c]
xor eax, 0x62946a4f
xor edx, edx
div dword [ecx]
mov eax, dword [ecx + 4]
mov ecx, dword [eax + edx*4]
cmp ecx, esi
lea eax, [eax + edx*4]
jne 0x588f21
mov ecx, dword [esi + 0x2c]
mov dword [eax], ecx
jmp 0x588f37
mov eax, dword [ecx + 0x2c]
cmp eax, esi
je 0x588f31
mov ecx, eax
mov eax, dword [ecx + 0x2c]
cmp eax, esi
jne 0x588f28
mov edx, dword [esi + 0x2c]
mov dword [ecx + 0x2c], edx
push esi
call fcn.00588be0
mov eax, dword [0x631e10]
add esp, 4
test eax, eax
jne 0x588dbc
pop edi
mov esi, 0x631de0
pop ebx
mov dword [ebp - 8], esi
mov edx, 0
mov ecx, dword [ebp - 8]
xchg dword [ecx], edx
mov eax, dword [0x631de4]
test eax, eax
je 0x588f73
push esi
call fcn.0051e330
add esp, 4
pop esi
mov esp, ebp
pop ebp
ret