Function at 0x589390
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xe0
push ebx
mov ebx, dword [esp + 0xec]
push ebp
mov ebp, dword [esp + 0xec]
push esi
push edi
mov edi, dword [esp + 0xfc]
lea ecx, [edi + eax]
lea eax, [ebx + edx]
mov edx, dword [ebp + 0x703c]
mov dword [esp + 0x70], edx
mov edx, dword [ebp + 0x7040]
mov dword [esp + 0x98], edx
mov edx, dword [ebp + 0x7044]
mov dword [esp + 0x24], ecx
mov ecx, dword [ebp + 0x7104]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x70f4]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x100]
add ecx, eax
mov esi, ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x94], ecx
test edx, edx
je 0x58a129
cmp edx, 4
mov dword [esp + 0x6c], edx
jl 0x58941d
mov dword [esp + 0x6c], 4
mov dword [ebp + 0x708c], 1
mov eax, dword [ebp + 0x702c]
mov ecx, dword [ebp + 0x7030]
mov edx, dword [ebp + 0x7034]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x70]
sub ebx, eax
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x58], ecx
lea ecx, [esp + 0x28]
mov dword [esp + 0x5c], edx
sub eax, edi
push ecx
mov edx, edi
mov dword [esp + 0x6c], ebx
call fcn.005afae0
add esp, 4
cmp eax, 0xffffff88
jbe 0x589485
mov eax, 0xffffffec
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe0
ret
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov edi, dword [ebp]
mov edx, dword [edi + 4]
mov ecx, ebx
and ecx, 0x1f
shl eax, cl
or ecx, 0xffffffff
sub ecx, edx
and ecx, 0x1f
shr eax, 1
shr eax, cl
add ebx, edx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x3c], eax
call fcn.005b25c0
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
add edi, 8
mov ecx, ebx
and ecx, 0x1f
shl eax, cl
mov dword [esp + 0x40], edi
mov edi, dword [ebp + 8]
mov edx, dword [edi + 4]
or ecx, 0xffffffff
sub ecx, edx
shr eax, 1
and ecx, 0x1f
shr eax, cl
add ebx, edx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x44], eax
call fcn.005b25c0
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
add edi, 8
mov ecx, ebx
and ecx, 0x1f
shl eax, cl
mov dword [esp + 0x48], edi
mov edi, dword [ebp + 4]
mov edx, dword [edi + 4]
or ecx, 0xffffffff
sub ecx, edx
shr eax, 1
and ecx, 0x1f
shr eax, cl
add ebx, edx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x4c], eax
call fcn.005b25c0
add edi, 8
mov dword [esp + 0x50], edi
mov dword [esp + 0x1c], 0
call fcn.005b25c0
cmp eax, 2
jg 0x589886
lea ebp, [esp + 0xb0]
jmp 0x589560
mov edx, dword [esp + 0x1c]
cmp edx, dword [esp + 0x6c]
jge 0x589894
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
movzx edx, byte [eax + ecx*8 + 2]
mov esi, dword [esp + 0x4c]
mov ebx, dword [esp + 0x48]
mov eax, dword [eax + ecx*8 + 4]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x50]
movzx edi, byte [edx + esi*8 + 2]
mov ecx, dword [edx + esi*8 + 4]
mov edx, dword [esp + 0x48]
mov dword [esp + 0x90], edi
mov edi, dword [esp + 0x44]
movzx ebx, byte [ebx + edi*8 + 2]
mov edx, dword [edx + edi*8 + 4]
mov dword [esp + 0x24], eax
mov dword [esp + 0x88], ecx
mov dword [esp + 0x9c], edx
test ebx, ebx
jne 0x5895d1
mov edx, dword [esp + 0x28]
xor edi, edi
jmp 0x589679
cmp dword [esp + 0x104], 0
je 0x589647
mov eax, ebx
cmp ebx, 0x18
jb 0x5895e7
mov eax, 0x18
mov edi, dword [esp + 0x2c]
mov ecx, edi
and ecx, 0x1f
mov esi, ebx
sub esi, eax
mov eax, dword [esp + 0x28]
shl eax, cl
mov edx, ebx
sub edx, esi
mov ecx, edx
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, esi
add edi, edx
mov dword [esp + 0x2c], edi
shl eax, cl
lea ecx, [esp + 0x28]
add eax, dword [esp + 0x9c]
mov edi, eax
call fcn.005b25c0
mov edx, dword [esp + 0x28]
test esi, esi
je 0x589674
mov ecx, dword [esp + 0x2c]
add dword [esp + 0x2c], esi
and ecx, 0x1f
mov eax, edx
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
add edi, eax
jmp 0x589674
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov ecx, eax
and ecx, 0x1f
shl edi, cl
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr edi, cl
add eax, ebx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], eax
add edi, edx
call fcn.005b25c0
mov edx, dword [esp + 0x28]
cmp ebx, 1
ja 0x5896be
xor eax, eax
cmp dword [esp + 0x24], eax
sete al
add edi, eax
je 0x5896b8
mov esi, dword [esp + 0x54]
lea eax, [esi - 1]
cmp edi, 3
je 0x589696
mov eax, dword [esp + edi*4 + 0x54]
xor ecx, ecx
test eax, eax
sete cl
add eax, ecx
cmp edi, 1
je 0x5896ac
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], esi
mov edi, eax
mov dword [esp + 0x54], eax
jmp 0x5896d2
mov edi, dword [esp + 0x54]
jmp 0x5896d2
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x54], edi
mov ebx, dword [esp + 0x90]
mov dword [esp + 0x80], edi
test ebx, ebx
jbe 0x5896fe
mov ecx, dword [esp + 0x2c]
and ecx, 0x1f
mov eax, edx
shl eax, cl
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr eax, cl
add dword [esp + 0x2c], ebx
jmp 0x589700
xor eax, eax
mov ecx, dword [esp + 0x88]
lea esi, [eax + ecx]
mov eax, dword [esp + 0x18]
add ebx, eax
mov dword [esp + 0x7c], esi
cmp ebx, 0x14
jb 0x58972a
lea ecx, [esp + 0x28]
call fcn.005b25c0
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
test eax, eax
jbe 0x589748
mov ecx, dword [esp + 0x2c]
and ecx, 0x1f
shl edx, cl
mov ecx, eax
neg ecx
and ecx, 0x1f
shr edx, cl
add dword [esp + 0x2c], eax
mov eax, edx
jmp 0x58974a
xor eax, eax
mov edx, dword [esp + 0x24]
lea ebx, [eax + edx]
lea ecx, [esp + 0x28]
mov dword [esp + 0x78], ebx
call fcn.005b25c0
mov eax, dword [esp + 0x68]
lea ecx, [ebx + eax]
mov eax, dword [esp + 0x64]
cmp edi, ecx
ja 0x589771
mov eax, dword [esp + 0x60]
add esi, ecx
sub eax, edi
mov edi, dword [esp + 0x2c]
add eax, ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x40]
mov ebx, dword [eax + ecx*8]
mov ecx, dword [eax + ecx*8 + 4]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x8c], ecx
mov ecx, edi
and ecx, 0x1f
mov edx, eax
shl edx, cl
or ecx, 0xffffffff
mov dword [esp + 0x68], esi
mov esi, ebx
shr esi, 0x18
sub ecx, esi
and ecx, 0x1f
shr edx, 1
shr edx, cl
movzx ecx, bx
add ecx, edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x50]
add edi, esi
mov esi, dword [ecx + edx*8]
mov edx, dword [ecx + edx*8 + 4]
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov dword [esp + 0x8c], edx
or ecx, 0xffffffff
mov edx, esi
shr edx, 0x18
sub ecx, edx
and ecx, 0x1f
shr eax, 1
shr eax, cl
movzx ecx, si
add ecx, eax
add edi, edx
mov dword [esp + 0x4c], ecx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], edi
call fcn.005b25c0
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
mov edx, dword [eax + ecx*8 + 4]
mov esi, dword [eax + ecx*8]
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
movq xmm0, qword [esp + 0x78]
inc dword [esp + 0x1c]
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov dword [esp + 0x8c], edx
or ecx, 0xffffffff
mov edx, esi
shr edx, 0x18
sub ecx, edx
and ecx, 0x1f
shr eax, 1
shr eax, cl
movzx ecx, si
add ecx, eax
movq qword [ebp], xmm0
movq xmm0, qword [esp + 0x80]
add edi, edx
mov dword [esp + 0x44], ecx
movq qword [ebp + 8], xmm0
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], edi
add ebp, 0x10
call fcn.005b25c0
mov esi, dword [esp + 0x10]
cmp eax, 2
jle 0x589560
mov edx, dword [esp + 0x6c]
cmp dword [esp + 0x1c], edx
jl 0x589475
lea ecx, [esp + 0x28]
call fcn.005b25c0
cmp eax, 2
jg 0x589e60
jmp 0x5898b0
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x100]
cmp eax, ecx
jge 0x589e77
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
movzx edx, byte [eax + ecx*8 + 2]
mov esi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x44]
mov eax, dword [eax + ecx*8 + 4]
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0x50]
movzx edi, byte [edx + esi*8 + 2]
mov ecx, dword [edx + esi*8 + 4]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x48]
movzx ebx, byte [edi + ebp*8 + 2]
mov ebp, dword [edi + ebp*8 + 4]
mov dword [esp + 0x18], eax
mov dword [esp + 0x88], ecx
test ebx, ebx
jne 0x58991b
mov edx, dword [esp + 0x28]
xor esi, esi
jmp 0x5899c2
cmp dword [esp + 0x104], 0
je 0x589990
mov eax, ebx
cmp ebx, 0x18
jb 0x589931
mov eax, 0x18
mov esi, dword [esp + 0x2c]
mov ecx, esi
and ecx, 0x1f
mov edi, ebx
sub edi, eax
mov eax, dword [esp + 0x28]
shl eax, cl
mov edx, ebx
sub edx, edi
mov ecx, edx
neg ecx
and ecx, 0x1f
shr eax, cl
mov ecx, edi
add esi, edx
mov dword [esp + 0x2c], esi
shl eax, cl
lea ecx, [esp + 0x28]
add eax, ebp
mov esi, eax
call fcn.005b25c0
mov edx, dword [esp + 0x28]
test edi, edi
je 0x5899bd
mov ebp, dword [esp + 0x2c]
mov ecx, ebp
and ecx, 0x1f
mov eax, edx
shl eax, cl
mov ecx, edi
neg ecx
and ecx, 0x1f
shr eax, cl
add ebp, edi
mov dword [esp + 0x2c], ebp
add esi, eax
jmp 0x5899bd
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
mov ecx, eax
and ecx, 0x1f
shl esi, cl
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr esi, cl
add eax, ebx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], eax
add esi, ebp
call fcn.005b25c0
mov edx, dword [esp + 0x28]
cmp ebx, 1
ja 0x589a07
xor eax, eax
cmp dword [esp + 0x18], eax
sete al
add esi, eax
je 0x589a01
mov edi, dword [esp + 0x54]
lea eax, [edi - 1]
cmp esi, 3
je 0x5899df
mov eax, dword [esp + esi*4 + 0x54]
xor ecx, ecx
test eax, eax
sete cl
add eax, ecx
cmp esi, 1
je 0x5899f5
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], edi
mov esi, eax
mov dword [esp + 0x54], eax
jmp 0x589a1b
mov esi, dword [esp + 0x54]
jmp 0x589a1b
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x54], esi
mov edi, dword [esp + 0x24]
mov dword [esp + 0xa8], esi
test edi, edi
jbe 0x589a48
mov ebx, dword [esp + 0x2c]
mov ecx, ebx
and ecx, 0x1f
mov eax, edx
shl eax, cl
mov ecx, edi
neg ecx
and ecx, 0x1f
shr eax, cl
add ebx, edi
mov dword [esp + 0x2c], ebx
jmp 0x589a4a
xor eax, eax
mov ecx, dword [esp + 0x88]
mov ebx, dword [esp + 0x90]
lea edi, [eax + ecx]
mov eax, dword [esp + 0x24]
add eax, ebx
mov dword [esp + 0xa4], edi
cmp eax, 0x14
jb 0x589a7a
lea ecx, [esp + 0x28]
call fcn.005b25c0
mov edx, dword [esp + 0x28]
test ebx, ebx
jbe 0x589a9c
mov ebp, dword [esp + 0x2c]
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr edx, cl
add ebp, ebx
mov dword [esp + 0x2c], ebp
mov eax, edx
jmp 0x589a9e
xor eax, eax
mov ecx, dword [esp + 0x18]
lea ebx, [eax + ecx]
lea ecx, [esp + 0x28]
mov dword [esp + 0xa0], ebx
call fcn.005b25c0
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x64]
lea ecx, [ebx + edx]
cmp esi, ecx
ja 0x589ac8
mov eax, dword [esp + 0x60]
add edi, ecx
sub eax, esi
add eax, ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x40]
mov ebx, dword [eax + ecx*8]
mov eax, dword [eax + ecx*8 + 4]
mov dword [esp + 0x68], edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x28]
mov ecx, edi
and ecx, 0x1f
mov edx, eax
shl edx, cl
or ecx, 0xffffffff
mov esi, ebx
shr esi, 0x18
sub ecx, esi
and ecx, 0x1f
shr edx, 1
shr edx, cl
movzx ecx, bx
add ecx, edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x50]
add edi, esi
mov esi, dword [ecx + edx*8]
mov edx, dword [ecx + edx*8 + 4]
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov dword [esp + 0x8c], edx
or ecx, 0xffffffff
mov edx, esi
shr edx, 0x18
sub ecx, edx
and ecx, 0x1f
shr eax, 1
shr eax, cl
movzx ecx, si
add ecx, eax
add edi, edx
mov dword [esp + 0x4c], ecx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], edi
call fcn.005b25c0
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
mov edx, dword [eax + ecx*8 + 4]
mov esi, dword [eax + ecx*8]
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x1c]
mov ecx, edi
and ecx, 0x1f
shl eax, cl
or ecx, 0xffffffff
mov dword [esp + 0x8c], edx
mov edx, esi
shr edx, 0x18
sub ecx, edx
and ecx, 0x1f
shr eax, 1
shr eax, cl
movzx ecx, si
add ecx, eax
and ebx, 3
add edi, edx
shl ebx, 4
movq xmm0, qword [esp + ebx + 0xb0]
lea ebx, [esp + ebx + 0xb0]
movq qword [esp + 0x78], xmm0
movq xmm0, qword [ebx + 8]
mov eax, dword [esp + 0x78]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x2c], edi
movq qword [esp + 0x80], xmm0
mov edx, dword [esp + 0x7c]
mov edi, dword [esp + 0x84]
lea ebp, [edx + eax]
lea esi, [eax + ecx]
mov dword [esp + 0x18], ebp
add ebp, ecx
mov ecx, dword [esp + 0x20]
add ecx, eax
mov dword [esp + 0x90], ecx
cmp ebp, dword [esp + 0x14]
ja 0x58a137
cmp ecx, dword [esp + 0x94]
ja 0x589475
mov ecx, dword [esp + 0x14]
add ecx, 0xfffffff8
cmp esi, ecx
jbe 0x589c6e
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x70]
movq xmm0, qword [ebx]
push edx
mov edx, dword [esp + 0x98]
push eax
push ecx
push edx
mov edx, dword [esp + 0x24]
lea eax, [esp + 0x30]
push eax
sub esp, 0x10
mov eax, esp
movq qword [eax], xmm0
movq xmm0, qword [ebx + 8]
movq qword [eax + 8], xmm0
mov eax, dword [esp + 0x34]
call fcn.00588b10
add esp, 0x24
jmp 0x589e1d
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx]
mov ecx, dword [esp + 0x10]
mov dword [ecx], edx
mov edx, dword [esp + 0x20]
mov edx, dword [edx + 4]
mov dword [ecx + 4], edx
cmp eax, 8
jbe 0x589cba
add ecx, 8
mov edx, ecx
sub edx, dword [esp + 0x10]
lea eax, [ecx + eax - 8]
add edx, dword [esp + 0x20]
mov dword [esp + 0x88], eax
mov eax, dword [edx]
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
add ecx, 8
add edx, 8
cmp ecx, dword [esp + 0x88]
jb 0x589ca1
mov ecx, dword [esp + 0x90]
mov edx, esi
sub edx, dword [esp + 0x70]
mov dword [esp + 0x20], ecx
cmp dword [esp + 0x80], edx
jbe 0x589d65
mov eax, esi
sub eax, dword [esp + 0x98]
cmp dword [esp + 0x80], eax
ja 0x589475
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x7c]
lea edx, [eax + ecx]
cmp edx, dword [esp + 0x74]
ja 0x589d12
push ecx
push eax
push esi
call fcn.005b8250
add esp, 0xc
jmp 0x589e19
mov edi, dword [esp + 0x74]
sub edi, eax
push edi
push eax
push esi
call fcn.005b8250
mov eax, dword [esp + 0x20]
sub dword [esp + 0x88], edi
mov ecx, dword [esp + 0x88]
add esi, edi
mov edi, dword [esp + 0x7c]
add eax, 0xfffffff8
add esp, 0xc
cmp esi, eax
ja 0x589d47
cmp ecx, 3
jae 0x589d65
test ecx, ecx
jbe 0x589e19
mov eax, edi
sub eax, esi
mov edi, ecx
mov dl, byte [eax + esi]
mov byte [esi], dl
inc esi
sub edi, 1
jne 0x589d55
jmp 0x589e19
mov eax, dword [esp + 0x80]
cmp eax, 8
jae 0x589da2
movzx edx, byte [edi]
mov ecx, dword [eax*4 + str._b_b_b_a_b_t_n_v]
mov byte [esi], dl
movzx edx, byte [edi + 1]
mov byte [esi + 1], dl
movzx edx, byte [edi + 2]
mov byte [esi + 2], dl
movzx edx, byte [edi + 3]
mov byte [esi + 3], dl
add edi, dword [eax*4 + 0x68d9cc]
mov eax, dword [edi]
mov dword [esi + 4], eax
sub edi, ecx
jmp 0x589dac
mov ecx, dword [edi]
mov dword [esi], ecx
mov edx, dword [edi + 4]
mov dword [esi + 4], edx
mov eax, dword [esp + 0x14]
lea ecx, [eax - 0xd]
add esi, 8
add edi, 8
cmp ebp, ecx
jbe 0x589dfc
add eax, 0xfffffff8
cmp esi, eax
jae 0x589de7
mov ecx, dword [esp + 0x14]
add ecx, 0xfffffff8
sub ecx, esi
push edi
mov eax, esi
call fcn.00587ef0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff8
mov edx, eax
sub edx, esi
add esp, 4
add edi, edx
mov esi, eax
cmp esi, ebp
jae 0x589e19
jmp 0x589df0
mov al, byte [edi]
mov byte [esi], al
inc esi
inc edi
cmp esi, ebp
jb 0x589df0
jmp 0x589e19
mov ecx, dword [esp + 0x7c]
lea eax, [ecx + esi - 8]
sub edi, esi
mov edx, dword [edi + esi]
mov dword [esi], edx
mov ecx, dword [edi + esi + 4]
mov dword [esi + 4], ecx
add esi, 8
cmp esi, eax
jb 0x589e06
mov eax, dword [esp + 0x18]
cmp eax, 0xffffff88
ja 0x58a158
movq xmm0, qword [esp + 0xa0]
add dword [esp + 0x10], eax
inc dword [esp + 0x1c]
movq qword [ebx], xmm0
movq xmm0, qword [esp + 0xa8]
lea ecx, [esp + 0x28]
movq qword [ebx + 8], xmm0
call fcn.005b25c0
cmp eax, 2
jg 0x589e60
mov esi, dword [esp + 0x10]
jmp 0x5898b0
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x100]
cmp eax, ecx
jl 0x589475
mov esi, dword [esp + 0x10]
sub eax, dword [esp + 0x6c]
cmp eax, ecx
mov dword [esp + 0x1c], eax
jge 0x58a0f2
mov edx, dword [esp + 0x14]
add edx, 0xfffffff8
mov dword [esp + 0x18], edx
jmp 0x589ea0
and eax, 3
shl eax, 4
movq xmm0, qword [esp + eax + 0xb0]
lea eax, [esp + eax + 0xb0]
movq qword [esp + 0x78], xmm0
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
movq xmm0, qword [eax + 8]
add ecx, edx
lea ebx, [ecx + esi]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x20]
add ecx, edx
movq qword [esp + 0x80], xmm0
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x84]
lea edi, [edx + esi]
mov dword [esp + 0x88], ebx
cmp ebx, dword [esp + 0x14]
ja 0x58a137
mov ebx, dword [esp + 0x94]
cmp dword [esp + 0x24], ebx
ja 0x589475
cmp edi, dword [esp + 0x18]
jbe 0x589f59
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x98]
movq xmm0, qword [eax]
push edx
mov edx, dword [esp + 0x74]
push ecx
push edx
mov edx, dword [esp + 0x20]
push ebx
lea ecx, [esp + 0x30]
push ecx
sub esp, 0x10
mov ecx, esp
movq qword [ecx], xmm0
movq xmm0, qword [eax + 8]
mov eax, esi
movq qword [ecx + 8], xmm0
call fcn.00588b10
add esp, 0x24
jmp 0x58a0cd
mov ebp, dword [esp + 0x20]
mov eax, dword [ebp]
mov dword [esi], eax
mov eax, dword [ebp + 4]
mov dword [esi + 4], eax
cmp edx, 8
jbe 0x589f94
lea eax, [esi + 8]
lea ebx, [eax + edx - 8]
mov edx, eax
sub edx, esi
add edx, ebp
lea ebx, [ebx]
mov esi, dword [edx]
mov dword [eax], esi
mov esi, dword [edx + 4]
mov dword [eax + 4], esi
add eax, 8
add edx, 8
cmp eax, ebx
jb 0x589f80
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x80]
mov dword [esp + 0x20], edx
mov edx, edi
sub edx, dword [esp + 0x70]
mov eax, edi
cmp ebx, edx
jbe 0x58a021
sub eax, dword [esp + 0x98]
cmp ebx, eax
ja 0x589475
mov eax, dword [esp + 0x84]
mov ebp, dword [esp + 0x7c]
lea ecx, [eax + ebp]
cmp ecx, dword [esp + 0x74]
ja 0x589fe2
push ebp
push eax
push edi
call fcn.005b8250
add esp, 0xc
jmp 0x58a0c5
mov esi, dword [esp + 0x74]
sub esi, eax
push esi
push eax
push edi
call fcn.005b8250
mov ecx, dword [esp + 0x7c]
lea eax, [esi + edi]
add esp, 0xc
sub ebp, esi
cmp eax, dword [esp + 0x18]
ja 0x58a007
cmp ebp, 3
jae 0x58a025
test ebp, ebp
jbe 0x58a0c5
sub ecx, eax
mov dl, byte [ecx + eax]
mov byte [eax], dl
inc eax
sub ebp, 1
jne 0x58a011
jmp 0x58a0c5
mov ebp, dword [esp + 0x7c]
cmp ebx, 8
jae 0x58a058
movzx edx, byte [ecx]
mov esi, dword [ebx*4 + str._b_b_b_a_b_t_n_v]
mov byte [eax], dl
movzx edx, byte [ecx + 1]
mov byte [eax + 1], dl
movzx edx, byte [ecx + 2]
mov byte [eax + 2], dl
movzx edx, byte [ecx + 3]
mov byte [eax + 3], dl
add ecx, dword [ebx*4 + 0x68d9cc]
mov edx, dword [ecx]
sub ecx, esi
jmp 0x58a05f
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov esi, dword [esp + 0x88]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x14]
add edx, 0xfffffff3
add eax, 8
add ecx, 8
cmp esi, edx
jbe 0x58a0ac
mov edx, dword [esp + 0x18]
cmp eax, edx
jae 0x58a09b
sub ecx, eax
mov edi, dword [eax + ecx]
mov dword [eax], edi
mov edi, dword [eax + ecx + 4]
mov dword [eax + 4], edi
add eax, 8
cmp eax, edx
jb 0x58a084
add ecx, edx
mov eax, edx
cmp eax, esi
jae 0x58a0c5
nop
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
inc ecx
cmp eax, esi
jb 0x58a0a0
jmp 0x58a0c5
lea edx, [eax + ebp - 8]
sub ecx, eax
mov esi, dword [eax + ecx]
mov dword [eax], esi
mov esi, dword [eax + ecx + 4]
mov dword [eax + 4], esi
add eax, 8
cmp eax, edx
jb 0x58a0b2
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x10]
cmp eax, 0xffffff88
ja 0x58a158
add esi, eax
mov eax, dword [esp + 0x1c]
inc eax
cmp eax, dword [esp + 0x100]
mov dword [esp + 0x10], esi
mov dword [esp + 0x1c], eax
jl 0x589ea0
mov eax, dword [esp + 0xf4]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0xf8]
mov dword [eax + 0x702c], ecx
mov ecx, dword [esp + 0x5c]
mov dword [eax + 0x7034], ecx
mov ecx, dword [esp + 0x94]
mov dword [eax + 0x7030], edx
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
sub ecx, eax
mov edi, ecx
sub edx, esi
cmp edi, edx
jbe 0x58a147
mov eax, 0xffffffba
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe0
ret
push edi
push eax
push esi
call fcn.005b6910
sub edi, ebx
add esp, 0xc
add edi, esi
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe0
ret