Function at 0x5b9020
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x190
mov eax, dword [0x79b5e0]
xor eax, esp
mov dword [esp + 0x18c], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0xc]
push esi
mov dword [esp + 0x58], eax
mov esi, 1
push edi
mov edi, edx
mov edx, ecx
mov dword [esp + 0x48], edi
mov dword [esp + 8], edx
mov eax, dword [edx + 0x5c]
mov ecx, dword [edx + 0xc]
mov dword [esp + 0x24], eax
mov eax, dword [edx + 0x28]
mov dword [esp + 0x18], eax
mov eax, dword [edx + 0x24]
mov dword [esp + 0x38], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x58], ecx
add ecx, eax
mov dword [esp + 0x6c], ecx
mov ecx, edi
sub ecx, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], ecx
mov eax, esi
mov ecx, dword [edx + 0xb8]
shl eax, cl
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x28]
sub eax, dword [edx + 0x10]
mov ecx, dword [esp + 0x50]
cmp eax, ecx
jbe 0x5b90bc
mov eax, dword [esp + 0x28]
sub eax, ecx
mov dword [esp + 0x54], eax
mov eax, dword [edx + 0x10]
mov ecx, dword [esp + 0x54]
jmp 0x5b90c1
mov eax, dword [edx + 0x10]
mov ecx, eax
cmp dword [edx + 0x18], 0
mov dword [esp + 0xc], 3
cmovne ecx, eax
mov dword [esp + 0x14], 0x3f
mov eax, dword [edx + 0xc4]
mov dword [esp + 0x54], ecx
mov ecx, 6
cmp eax, ecx
cmovb ecx, eax
mov eax, dword [edx + 0x50]
mov dword [esp + 0x10], eax
mov eax, dword [edx + 0x54]
shl esi, cl
imul ecx, dword [edi], 0x9e3779b1
mov dword [esp + 0x64], eax
mov eax, dword [edx + 0xb4]
mov dword [esp + 0x50], eax
mov dword [esp + 0x4c], esi
mov dword [esp + 0x3c], ecx
mov ecx, 0x20
mov esi, dword [eax + 0x5c]
mov edx, dword [eax + 0x28]
mov eax, dword [eax + 0x24]
add eax, 8
sub ecx, eax
mov eax, dword [esp + 0x3c]
shr eax, cl
mov ecx, eax
movzx eax, al
shr ecx, 2
and ecx, 0x3fffffc0
mov dword [esp + 0x80], eax
lea eax, [ecx + edx]
mov dword [esp + 0x68], eax
lea eax, [esi + ecx*4]
mov esi, dword [esp + 8]
mov dword [esp + 0x60], eax
cmp dword [esi + 0xdc], 0
jne 0x5b93ab
mov edx, dword [esp + 0x2c]
mov eax, edi
mov ecx, dword [esi + 0x1c]
sub eax, edx
mov dword [esp + 0x3c], eax
sub eax, ecx
mov dword [esp + 0x20], ecx
cmp eax, 0x180
jbe 0x5b92ba
lea eax, [ecx + 0x60]
mov dword [esp + 0x30], eax
cmp ecx, eax
jae 0x5b922f
mov eax, dword [esp + 0x38]
mov esi, 0x20
mov edi, dword [esp + 8]
add eax, 8
sub esi, eax
mov dword [esp + 0x40], esi
jmp 0x5b91b0
imul edx, dword [ecx + edx + 8], 0x9e3779b1
mov ecx, esi
mov eax, dword [edi + 0x54]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x20]
and eax, 7
xor edx, dword [edi + 0x50]
shr edx, cl
mov ecx, dword [edi + eax*4 + 0x2c]
mov esi, ecx
mov dword [edi + eax*4 + 0x2c], edx
mov eax, 0
mov edx, dword [esp + 0x18]
shr esi, 2
and esi, 0x3fffffc0
mov dword [esp + 0x34], ecx
add edx, esi
movzx ecx, byte [edx]
dec ecx
and ecx, 0x3f
cmove eax, dword [esp + 0x14]
add ecx, eax
mov eax, dword [esp + 0x34]
mov byte [edx], cl
mov byte [ecx + edx], al
lea eax, [ecx + esi]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x40]
mov dword [edx + eax*4], ecx
inc ecx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x20], ecx
cmp ecx, dword [esp + 0x30]
jb 0x5b91b0
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 8]
mov ecx, dword [esp + 0x3c]
lea edx, [edi + 1]
mov eax, dword [esp + 0x2c]
add ecx, 0xffffffe0
add eax, ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x34], ecx
cmp eax, edx
jbe 0x5b924f
xor edx, edx
jmp 0x5b9256
sub edx, dword [esp + 0x2c]
sub edx, ecx
inc edx
mov eax, 8
cmp edx, eax
cmova edx, eax
add edx, ecx
mov dword [esp + 0x40], edx
cmp ecx, edx
jae 0x5b92ba
mov eax, dword [esi + 0x24]
mov ecx, 0x20
add eax, 8
mov edi, edx
sub ecx, eax
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x34]
mov eax, dword [esi + 0x54]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x2c]
imul edx, dword [ecx + eax], 0x9e3779b1
mov ecx, dword [esp + 0x30]
xor edx, dword [esi + 0x50]
shr edx, cl
mov ecx, dword [esp + 0x34]
mov eax, ecx
and eax, 7
inc ecx
mov dword [esp + 0x34], ecx
mov dword [esi + eax*4 + 0x2c], edx
cmp ecx, edi
jb 0x5b9281
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x20]
mov eax, dword [esi + 0x5c]
mov edx, dword [esi + 0x24]
mov dword [esp + 0x70], eax
mov eax, dword [esi + 0x28]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x3c]
cmp ecx, eax
jae 0x5b936d
lea eax, [edx + 8]
mov edx, 0x20
sub edx, eax
mov dword [esp + 0x40], edx
mov edi, edx
mov edi, edi
mov eax, dword [esi + 0x54]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x30]
imul edx, dword [ecx + eax + 8], 0x9e3779b1
mov ecx, edi
mov eax, dword [esp + 0x20]
and eax, 7
xor edx, dword [esi + 0x50]
shr edx, cl
mov ecx, dword [esi + eax*4 + 0x2c]
mov dword [esi + eax*4 + 0x2c], edx
mov esi, ecx
mov edx, dword [esp + 0x34]
mov eax, 0
shr esi, 2
and esi, 0x3fffffc0
mov dword [esp + 0x40], ecx
add edx, esi
movzx ecx, byte [edx]
dec ecx
and ecx, 0x3f
cmove eax, dword [esp + 0x14]
add ecx, eax
mov eax, dword [esp + 0x40]
mov byte [edx], cl
mov byte [ecx + edx], al
lea eax, [ecx + esi]
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 8]
mov dword [edx + eax*4], ecx
inc ecx
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x20], ecx
cmp ecx, eax
jb 0x5b92f0
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x38]
add eax, 8
imul edx, dword [edx + ecx + 8], 0x9e3779b1
mov ecx, 0x20
sub ecx, eax
mov eax, dword [esp + 0x28]
xor edx, dword [esp + 0x10]
shr edx, cl
and eax, 7
mov ecx, dword [esi + eax*4 + 0x2c]
mov dword [esi + eax*4 + 0x2c], edx
mov edx, ecx
mov dword [esp + 0x10], ecx
jmp 0x5b93ca
mov eax, dword [esp + 0x38]
mov ecx, 0x20
mov edx, dword [esp + 0x10]
add eax, 8
xor edx, dword [esp + 0x3c]
sub ecx, eax
mov eax, dword [esp + 0x28]
shr edx, cl
mov dword [esi + 0x1c], eax
add dword [esi + 0x58], edx
mov eax, edx
shr eax, 2
and eax, 0x3fffffc0
movzx ecx, dl
mov edx, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
add edx, eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x30], edx
mov dword [esp + 0x10], 0
mov dword [esp + 0x38], 0
lea ecx, [ecx + eax*4]
movzx eax, byte [edx]
mov dword [esp + 0x40], eax
and eax, 0x3f
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
movsx eax, al
mov dword [esp + 0x24], ecx
xor ecx, ecx
movd xmm0, eax
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm1, xmm0, 0
xorps xmm0, xmm0
movdqu xmmword [esp + 0x70], xmm0
movdqu xmm0, xmmword [edx]
lea edx, [edx + 0x10]
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
mov dword [esp + ecx*4 + 0x70], eax
inc ecx
cmp ecx, 4
jl 0x5b9434
mov eax, dword [esp + 0x7c]
cdq
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x78]
shld esi, ecx, 0x10
cdq
shl ecx, 0x10
or esi, edx
or ecx, eax
mov eax, dword [esp + 0x74]
shld esi, ecx, 0x10
cdq
shl ecx, 0x10
or esi, edx
or ecx, eax
mov eax, dword [esp + 0x70]
shld esi, ecx, 0x10
cdq
shl ecx, 0x10
or esi, edx
or ecx, eax
mov dword [esp + 0x74], esi
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x18]
movq xmm2, qword [esp + 0x70]
and ecx, 0x3f
movq xmm1, qword [esp + 0x70]
mov eax, ecx
neg eax
and eax, 0x3f
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ecx
psrlq xmm1, xmm0
por xmm2, xmm1
movq qword [esp + 0x70], xmm2
mov esi, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
test esi, esi
jne 0x5b94d2
test edx, edx
je 0x5b9536
mov edi, dword [esp + 0x4c]
test edi, edi
je 0x5b952e
test edx, edx
jne 0x5b94ea
bsf eax, esi
mov dword [esp + 0x70], eax
add eax, 0x20
jmp 0x5b94f1
bsf eax, edx
mov dword [esp + 0x70], eax
add eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
and eax, 0x3f
mov eax, dword [ecx + eax*4]
je 0x5b9518
cmp eax, dword [esp + 0x54]
jb 0x5b952e
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x90], eax
inc ecx
mov dword [esp + 0x10], ecx
dec edi
mov ecx, edx
mov eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
and edx, ecx
and esi, eax
ja 0x5b94d6
jb 0x5b952e
test edx, edx
jne 0x5b94d6
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x40]
mov edx, 0x3f
mov esi, dword [esp + 0x24]
dec ecx
and ecx, 0x3f
mov eax, 0
cmove eax, edx
mov edx, dword [esp + 0x14]
add ecx, eax
mov eax, dword [esp + 0x30]
mov byte [eax], cl
mov byte [ecx + eax], dl
mov edx, dword [esp + 8]
mov eax, dword [edx + 0x1c]
mov dword [esi + ecx*4], eax
inc dword [edx + 0x1c]
cmp dword [esp + 0x10], 0
jbe 0x5b9645
mov ecx, 3
xor eax, eax
lea ecx, [ecx]
mov eax, dword [esp + eax*4 + 0x90]
mov edx, dword [esp + 0x2c]
add edx, eax
mov dword [esp + 0x40], eax
mov eax, dword [edx + ecx - 3]
cmp eax, dword [edi + ecx - 3]
jne 0x5b9632
mov esi, dword [esp + 0x1c]
mov eax, edi
add esi, 0xfffffffd
cmp edi, esi
jae 0x5b95e4
mov eax, dword [edx]
xor eax, dword [edi]
je 0x5b95c4
mov esi, dword [esp + 0x1c]
bsf eax, eax
mov ecx, eax
mov dword [esp + 0x70], eax
shr ecx, 3
jmp 0x5b960c
lea eax, [edi + 4]
add edx, 4
cmp eax, esi
jae 0x5b95e4
mov edi, edi
mov ecx, dword [edx]
xor ecx, dword [eax]
jne 0x5b978b
add eax, 4
add edx, 4
cmp eax, esi
jb 0x5b95d0
mov esi, dword [esp + 0x1c]
lea ecx, [esi - 1]
cmp eax, ecx
jae 0x5b95fd
mov cx, word [edx]
cmp cx, word [eax]
jne 0x5b95fd
add eax, 2
add edx, 2
cmp eax, esi
jae 0x5b9608
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x5b9608
inc eax
mov ecx, eax
sub ecx, edi
cmp ecx, dword [esp + 0xc]
jbe 0x5b962e
mov eax, dword [esp + 0x28]
sub eax, dword [esp + 0x40]
mov edx, dword [esp + 0x5c]
add eax, 3
mov dword [esp + 0xc], ecx
mov dword [edx], eax
lea eax, [ecx + edi]
cmp eax, esi
je 0x5b9645
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x38]
inc eax
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0x10]
jb 0x5b9580
mov edx, dword [esp + 0x50]
mov dword [esp + 8], 0
mov dword [esp + 0x14], 0
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x24], eax
mov dword [esp + 0x70], ecx
sub ecx, eax
add dword [esp + 0x58], ecx
movzx eax, byte [edx]
and eax, 0x3f
xor ecx, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x80]
movsx eax, al
movd xmm0, eax
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm1, xmm0, 0
xorps xmm0, xmm0
movdqu xmmword [esp + 0x80], xmm0
movdqu xmm0, xmmword [edx]
lea edx, [edx + 0x10]
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
mov dword [esp + ecx*4 + 0x80], eax
inc ecx
cmp ecx, 4
jl 0x5b96a3
mov eax, dword [esp + 0x8c]
cdq
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x88]
shld esi, ecx, 0x10
cdq
shl ecx, 0x10
or esi, edx
or ecx, eax
mov eax, dword [esp + 0x84]
shld esi, ecx, 0x10
cdq
shl ecx, 0x10
or esi, edx
or ecx, eax
mov eax, dword [esp + 0x80]
shld esi, ecx, 0x10
cdq
shl ecx, 0x10
or esi, edx
or ecx, eax
mov dword [esp + 0x84], esi
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x18]
movq xmm2, qword [esp + 0x80]
and ecx, 0x3f
movq xmm1, qword [esp + 0x80]
mov eax, ecx
neg eax
and eax, 0x3f
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ecx
psrlq xmm1, xmm0
por xmm2, xmm1
movq qword [esp + 0x80], xmm2
mov esi, dword [esp + 0x84]
mov edx, dword [esp + 0x80]
test esi, esi
jne 0x5b9769
test edx, edx
je 0x5b98cc
xor edi, edi
jmp 0x5b9770
mov ecx, dword [esp + 0x4c]
test ecx, ecx
je 0x5b97ef
test edx, edx
jne 0x5b97a2
bsf eax, esi
mov dword [esp + 0x80], eax
add eax, 0x20
jmp 0x5b97ac
mov esi, dword [esp + 0x1c]
bsf ecx, ecx
mov dword [esp + 0x70], ecx
shr ecx, 3
sub ecx, edi
add ecx, eax
jmp 0x5b960c
bsf eax, edx
mov dword [esp + 0x80], eax
add eax, dword [esp + 0x18]
mov edi, dword [esp + 0x60]
and eax, 0x3f
mov eax, dword [edi + eax*4]
mov edi, dword [esp + 8]
je 0x5b97d9
mov ecx, dword [esp + 0x50]
cmp eax, dword [ecx + 0xc]
jb 0x5b97ef
mov dword [esp + edi*4 + 0x90], eax
inc edi
dec dword [esp + 0x4c]
mov dword [esp + 8], edi
mov ecx, edx
mov eax, esi
add ecx, 0xffffffff
adc eax, 0xffffffff
and edx, ecx
and esi, eax
ja 0x5b9770
jb 0x5b97ef
test edx, edx
jne 0x5b9770
test edi, edi
mov edi, dword [esp + 0x48]
je 0x5b98cc
mov ecx, dword [esp + 8]
xor eax, eax
mov eax, dword [esp + eax*4 + 0x90]
mov esi, dword [esp + 0x70]
add esi, eax
mov dword [esp + 0x80], eax
mov eax, dword [esi]
cmp eax, dword [edi]
jne 0x5b98a1
mov ecx, dword [esp + 0x1c]
lea eax, [edi + 4]
add esi, 4
sub eax, esi
mov edx, esi
add eax, dword [esp + 0x24]
cmp eax, ecx
cmovb ecx, eax
push ecx
lea ecx, [edi + 4]
call fcn.0059fed0
add esp, 4
mov dword [esp + 0x60], eax
lea ecx, [eax + esi]
cmp ecx, dword [esp + 0x24]
jne 0x5b9869
mov esi, dword [esp + 0x1c]
lea ecx, [edi + 4]
mov edx, dword [esp + 0x6c]
add ecx, eax
push esi
call fcn.0059fed0
add esp, 4
add eax, dword [esp + 0x60]
mov edx, dword [esp + 0xc]
lea ecx, [eax + 4]
cmp ecx, edx
jbe 0x5b989b
mov eax, dword [esp + 0x28]
mov edx, ecx
sub eax, dword [esp + 0x80]
sub eax, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
add eax, 3
mov dword [esp + 0xc], edx
mov dword [esi], eax
lea eax, [ecx + edi]
cmp eax, dword [esp + 0x1c]
je 0x5b98b6
mov ecx, dword [esp + 8]
jmp 0x5b98a5
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, ecx
jb 0x5b9801
mov eax, edx
pop edi
pop esi
mov ecx, dword [esp + 0x18c]
xor ecx, esp
call fcn.0061b9b8
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x194]
mov eax, dword [esp + 0xc]
pop edi
pop esi
xor ecx, esp
call fcn.0061b9b8
mov esp, ebp
pop ebp
ret